mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 05:50:26 +02:00
* Automatic docstring updates.
* Commit utilities and tracking files for automatic docstring updates.
This commit is contained in:
parent
be54b15d85
commit
780ee65e3b
11 changed files with 8570 additions and 270 deletions
|
@ -1,3 +1,11 @@
|
|||
2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
|
||||
|
||||
* posix.texi, scheme-data.texi, scheme-evaluation.texi,
|
||||
scheme-io.texi, scheme-memory.texi: Automatic docstring updates.
|
||||
|
||||
* new-docstrings.texi: New file. Holds snarfed docstrings that
|
||||
have not yet been incorporated into the reference manual.
|
||||
|
||||
2001-03-20 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
|
||||
|
||||
* scheme-options.texi (Evaluator options): Added evaluator
|
||||
|
|
4
doc/maint/ChangeLog
Normal file
4
doc/maint/ChangeLog
Normal file
|
@ -0,0 +1,4 @@
|
|||
2001-03-23 Neil Jerram <neil@ossau.uklinux.net>
|
||||
|
||||
* ChangeLog, README, docstring.el, guile.texi: New files.
|
||||
|
16
doc/maint/README
Normal file
16
doc/maint/README
Normal file
|
@ -0,0 +1,16 @@
|
|||
README for guile-core/doc/maint -*- text -*-
|
||||
|
||||
The files in this directory are used by the maintainers to automate
|
||||
the process of updating the Guile reference manual when the docstrings
|
||||
in the libguile C source change.
|
||||
|
||||
- ChangeLog is the change log for files in this directory.
|
||||
|
||||
- README is this file.
|
||||
|
||||
- docstring.el is a helpful Emacs Lisp library. The usual entry point
|
||||
is `docstring-process-current-buffer'.
|
||||
|
||||
- guile.texi is a snapshot of the built file
|
||||
guile-core/libguile/guile.texi, copied last time the reference
|
||||
manual was determined to be in sync with the libguile source.
|
563
doc/maint/docstring.el
Normal file
563
doc/maint/docstring.el
Normal file
|
@ -0,0 +1,563 @@
|
|||
;;; docstring.el --- utilities for Guile docstring maintenance
|
||||
;;;
|
||||
;;; Copyright (C) 2001 Neil Jerram
|
||||
;;;
|
||||
;;; This file is not part of GNU Emacs, but the same permissions apply.
|
||||
;;;
|
||||
;;; GNU Emacs is free software; you can redistribute it and/or modify
|
||||
;;; it under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 2, or (at your option)
|
||||
;;; any later version.
|
||||
;;;
|
||||
;;; GNU Emacs is distributed in the hope that it will be useful,
|
||||
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Emacs; see the file COPYING. If not, write to the
|
||||
;;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
;;; Boston, MA 02111-1307, USA.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; The basic premise of these utilities is that - at least in the
|
||||
;; short term - we can get a lot of reference manual mileage by
|
||||
;; co-opting the docstrings that are snarfed automatically from
|
||||
;; Guile's C and Scheme source code. But this leads to problems of
|
||||
;; synchronization... How do you track when a docstring has been
|
||||
;; updated in the source and so needs updating in the reference
|
||||
;; manual. What if a procedure is removed from the Guile source? And
|
||||
;; so on. To complicate matters, the exact snarfed docstring text
|
||||
;; will probably need to be modified so that it fits into the flow of
|
||||
;; the manual section in which it appears. Can we design solutions to
|
||||
;; synchronization problems that continue to work even when the manual
|
||||
;; text has been enhanced in this way?
|
||||
;;
|
||||
;; This file implements an approach to this problem that I have found
|
||||
;; useful. It involves keeping track of three copies of each
|
||||
;; docstring:
|
||||
;;
|
||||
;; "MANUAL" = the docstring as it appears in the reference manual.
|
||||
;;
|
||||
;; "SNARFED" = the docstring as snarfed from the current C or Scheme
|
||||
;; source.
|
||||
;;
|
||||
;; "TRACKING" = the docstring as it appears in a tracking file whose
|
||||
;; purpose is to record the most recent snarfed docstrings
|
||||
;; that are known to be in sync with the reference manual.
|
||||
;;
|
||||
;; The approaches are as follows.
|
||||
;;
|
||||
;; 1. Comparison of MANUAL-DOC, SOURCE-DOC and TRACK-DOC, to produce a
|
||||
;; summary output buffer in which keystrokes are defined to bring up
|
||||
;; detailed comparisons.
|
||||
;;
|
||||
;; 2. Comparison of MANUAL-DOC, SOURCE-DOC and TRACK-DOC using Ediff.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(defvar docstring-manual-directory (expand-file-name "~/Guile/cvs/guile-core/doc")
|
||||
"*The directory containing the Texinfo source for the Guile reference manual.")
|
||||
|
||||
(defvar docstring-tracking-root (expand-file-name "~/Guile/cvs/guile-core/doc/maint")
|
||||
"*Root directory for docstring tracking files. The tracking file
|
||||
for module (a b c) is expected to be in the file
|
||||
<docstring-tracking-root>/a/b/c.texi.")
|
||||
|
||||
(defvar docstring-snarfed-roots (list (expand-file-name "~/Guile/cvs/guile-core/libguile")
|
||||
(expand-file-name "~/Guile/cvs/guile-core/ice-9")
|
||||
(expand-file-name "~/Guile/cvs/guile-core/oop"))
|
||||
"*List of possible root directories for snarfed docstring files.
|
||||
For each entry in this list, the snarfed docstring file for module (a
|
||||
b c) is looked for in the file <entry>/a/b/c.texi.")
|
||||
|
||||
(defvar docstring-manual-files '("appendices.texi"
|
||||
"deprecated.texi"
|
||||
"expect.texi"
|
||||
"gh.texi"
|
||||
"goops.texi"
|
||||
"guile.texi"
|
||||
"indices.texi"
|
||||
"intro.texi"
|
||||
"posix.texi"
|
||||
"scheme-binding.texi"
|
||||
"scheme-control.texi"
|
||||
"scheme-data.texi"
|
||||
"scheme-debug.texi"
|
||||
"scheme-evaluation.texi"
|
||||
"scheme-ideas.texi"
|
||||
"scheme-indices.texi"
|
||||
"scheme-intro.texi"
|
||||
"scheme-io.texi"
|
||||
"scheme-memory.texi"
|
||||
"scheme-modules.texi"
|
||||
"scheme-options.texi"
|
||||
"scheme-procedures.texi"
|
||||
"scheme-reading.texi"
|
||||
"scheme-scheduling.texi"
|
||||
"scheme-translation.texi"
|
||||
"scheme-utility.texi"
|
||||
"scm.texi"
|
||||
"scripts.texi"
|
||||
"scsh.texi"
|
||||
"slib.texi"
|
||||
"tcltk.texi")
|
||||
"List of Texinfo source files that comprise the Guile reference manual.")
|
||||
|
||||
(defvar docstring-new-docstrings-file "new-docstrings.texi"
|
||||
"The name of a file in the Guile reference manual source directory
|
||||
to which new docstrings should be added.")
|
||||
|
||||
;; Apply FN in turn to each element in the list CANDIDATES until the
|
||||
;; first application that returns non-nil.
|
||||
(defun or-map (fn candidates args)
|
||||
(let ((result nil))
|
||||
(while candidates
|
||||
(setq result (apply fn (car candidates) args))
|
||||
(if result
|
||||
(setq result (cons (car candidates) result)
|
||||
candidates nil)
|
||||
(setq candidates (cdr candidates))))
|
||||
result))
|
||||
|
||||
;; Return t if the current buffer position is in the scope of the
|
||||
;; specified MODULE, as determined by "@c module ..." comments in the
|
||||
;; buffer. DEFAULT-OK specifies the return value in the case that
|
||||
;; there are no preceding module comments at all.
|
||||
(defun docstring-in-module (module default-ok)
|
||||
(save-excursion
|
||||
(if (re-search-backward "^@c module " nil t)
|
||||
(progn
|
||||
(search-forward "@c module ")
|
||||
(equal module (read (current-buffer))))
|
||||
default-ok)))
|
||||
|
||||
;; Find a docstring in the specified FILE-NAME for the item in module
|
||||
;; MODULE and with description DESCRIPTION. MODULE should be a list
|
||||
;; of symbols, Guile-style, for example: '(ice-9 session).
|
||||
;; DESCRIPTION should be the string that is expected after the @deffn,
|
||||
;; for example "primitive acons" or "syntax let*".
|
||||
(defun find-docstring (file-name module description)
|
||||
(and (file-exists-p file-name)
|
||||
(let ((buf (find-file-noselect file-name))
|
||||
(deffn-regexp (concat "^@deffnx? "
|
||||
(regexp-quote description)
|
||||
"[ \n\t]"))
|
||||
found
|
||||
result)
|
||||
(save-excursion
|
||||
(set-buffer buf)
|
||||
(goto-char (point-min))
|
||||
(while (and (not found)
|
||||
(re-search-forward deffn-regexp nil t))
|
||||
(save-excursion
|
||||
(goto-char (match-beginning 0))
|
||||
(beginning-of-line)
|
||||
(if (docstring-in-module module t)
|
||||
(setq found t))))
|
||||
(if found
|
||||
(setq result
|
||||
(list (current-buffer)
|
||||
(progn
|
||||
(re-search-backward "^@deffn ")
|
||||
(beginning-of-line)
|
||||
(point))
|
||||
(progn
|
||||
(re-search-forward "^@end deffn")
|
||||
(forward-line 1)
|
||||
(point))))))
|
||||
result)))
|
||||
|
||||
;; Find the reference manual version of the specified docstring.
|
||||
;; MODULE and DESCRIPTION specify the docstring as per
|
||||
;; `find-docstring'. The set of files that `find-manual-docstring'
|
||||
;; searches is determined by the value of the `docstring-manual-files'
|
||||
;; variable.
|
||||
(defun find-manual-docstring (module description)
|
||||
(let* ((result
|
||||
(or-map 'find-docstring
|
||||
(mapcar (function (lambda (file-name)
|
||||
(concat docstring-manual-directory
|
||||
"/"
|
||||
file-name)))
|
||||
(cons docstring-new-docstrings-file
|
||||
docstring-manual-files))
|
||||
(list module
|
||||
description)))
|
||||
(matched-file-name (and (cdr result)
|
||||
(file-name-nondirectory (car result)))))
|
||||
(if matched-file-name
|
||||
(setq docstring-manual-files
|
||||
(cons matched-file-name
|
||||
(delete matched-file-name docstring-manual-files))))
|
||||
(cdr result)))
|
||||
|
||||
;; Convert MODULE to a directory subpath.
|
||||
(defun module-to-path (module)
|
||||
(mapconcat (function (lambda (component)
|
||||
(symbol-name component)))
|
||||
module
|
||||
"/"))
|
||||
|
||||
;; Find the current snarfed version of the specified docstring.
|
||||
;; MODULE and DESCRIPTION specify the docstring as per
|
||||
;; `find-docstring'. The file that `find-snarfed-docstring' looks in
|
||||
;; is automatically generated from MODULE.
|
||||
(defun find-snarfed-docstring (module description)
|
||||
(let ((modpath (module-to-path module)))
|
||||
(cdr (or-map (function (lambda (root)
|
||||
(find-docstring (concat root
|
||||
"/"
|
||||
modpath
|
||||
".texi")
|
||||
module
|
||||
description)))
|
||||
docstring-snarfed-roots
|
||||
nil))))
|
||||
|
||||
;; Find the tracking version of the specified docstring. MODULE and
|
||||
;; DESCRIPTION specify the docstring as per `find-docstring'. The
|
||||
;; file that `find-tracking-docstring' looks in is automatically
|
||||
;; generated from MODULE.
|
||||
(defun find-tracking-docstring (module description)
|
||||
(find-docstring (concat docstring-tracking-root
|
||||
"/"
|
||||
(module-to-path module)
|
||||
".texi")
|
||||
module
|
||||
description))
|
||||
|
||||
;; Extract an alist of modules and descriptions from the current
|
||||
;; buffer.
|
||||
(defun make-module-description-list ()
|
||||
(let ((alist nil)
|
||||
(module '(guile)))
|
||||
(save-excursion
|
||||
(goto-char (point-min))
|
||||
(while (re-search-forward "^\\(@c module \\|@deffnx? \\({[^}]+}\\|[^ ]+\\) \\([^ \n]+\\)\\)"
|
||||
nil
|
||||
t)
|
||||
(let ((matched (buffer-substring (match-beginning 1)
|
||||
(match-end 1))))
|
||||
(if (string-equal matched "@c module ")
|
||||
(setq module (read (current-buffer)))
|
||||
(setq matched
|
||||
(concat (buffer-substring (match-beginning 2)
|
||||
(match-end 2))
|
||||
" "
|
||||
(buffer-substring (match-beginning 3)
|
||||
(match-end 3))))
|
||||
(message "Found docstring: %S: %s" module matched)
|
||||
(let ((descriptions (assoc module alist)))
|
||||
(setq alist
|
||||
(cons (cons module (cons matched (cdr-safe descriptions)))
|
||||
(if descriptions
|
||||
(delete descriptions alist)
|
||||
alist))))))))
|
||||
alist))
|
||||
|
||||
;; Return the docstring from the specified LOCATION. LOCATION is a
|
||||
;; list of three elements: buffer, start position and end position.
|
||||
(defun location-to-docstring (location)
|
||||
(and location
|
||||
(save-excursion
|
||||
(set-buffer (car location))
|
||||
(buffer-substring (cadr location) (caddr location)))))
|
||||
|
||||
;; Perform a comparison of the specified docstring. MODULE and
|
||||
;; DESCRIPTION are as per usual.
|
||||
(defun docstring-compare (module description)
|
||||
(let* ((manual-location (find-manual-docstring module description))
|
||||
(snarf-location (find-snarfed-docstring module description))
|
||||
(track-location (find-tracking-docstring module description))
|
||||
|
||||
(manual-docstring (location-to-docstring manual-location))
|
||||
(snarf-docstring (location-to-docstring snarf-location))
|
||||
(track-docstring (location-to-docstring track-location))
|
||||
|
||||
action
|
||||
issue)
|
||||
|
||||
;; Decide what to do.
|
||||
(cond ((null snarf-location)
|
||||
(setq action nil
|
||||
issue (if manual-location
|
||||
'consider-removal
|
||||
nil)))
|
||||
|
||||
((null manual-location)
|
||||
(setq action 'add-to-manual issue nil))
|
||||
|
||||
((null track-location)
|
||||
(setq action nil
|
||||
issue (if (string-equal manual-docstring snarf-docstring)
|
||||
nil
|
||||
'check-needed)))
|
||||
|
||||
((string-equal track-docstring snarf-docstring)
|
||||
(setq action nil issue nil))
|
||||
|
||||
((string-equal track-docstring manual-docstring)
|
||||
(setq action 'auto-update-manual issue nil))
|
||||
|
||||
(t
|
||||
(setq action nil issue 'update-needed)))
|
||||
|
||||
;; Return a pair indicating any automatic action that can be
|
||||
;; taken, and any issue for resolution.
|
||||
(cons action issue)))
|
||||
|
||||
;; Add the specified docstring to the manual.
|
||||
(defun docstring-add-to-manual (module description)
|
||||
(let ((buf (find-file-noselect (concat docstring-manual-directory
|
||||
"/"
|
||||
docstring-new-docstrings-file))))
|
||||
(save-excursion
|
||||
(set-buffer buf)
|
||||
(goto-char (point-max))
|
||||
(or (docstring-in-module module nil)
|
||||
(insert "\n@c module " (prin1-to-string module) "\n"))
|
||||
(insert "\n" (location-to-docstring (find-snarfed-docstring module
|
||||
description))))))
|
||||
|
||||
;; Auto-update the specified docstring in the manual.
|
||||
(defun docstring-auto-update-manual (module description)
|
||||
(let ((manual-location (find-manual-docstring module description))
|
||||
(track-location (find-tracking-docstring module description)))
|
||||
(save-excursion
|
||||
(set-buffer (car manual-location))
|
||||
(goto-char (cadr manual-location))
|
||||
(delete-region (cadr manual-location) (caddr manual-location))
|
||||
(insert (location-to-docstring (find-snarfed-docstring module
|
||||
description))))))
|
||||
|
||||
;; Process an alist of modules and descriptions, and produce a summary
|
||||
;; buffer describing actions taken and issues to be resolved.
|
||||
(defun docstring-process-alist (alist)
|
||||
(let (check-needed-list
|
||||
update-needed-list
|
||||
consider-removal-list
|
||||
added-to-manual-list
|
||||
auto-updated-manual-list)
|
||||
|
||||
(mapcar
|
||||
(function (lambda (module-list)
|
||||
(let ((module (car module-list)))
|
||||
(message "Module: %S" module)
|
||||
(mapcar
|
||||
(function (lambda (description)
|
||||
(message "Comparing docstring: %S: %s" module description)
|
||||
(let* ((ai (docstring-compare module description))
|
||||
(action (car ai))
|
||||
(issue (cdr ai)))
|
||||
|
||||
(cond ((eq action 'add-to-manual)
|
||||
(docstring-add-to-manual module description)
|
||||
(setq added-to-manual-list
|
||||
(cons (cons module description)
|
||||
added-to-manual-list)))
|
||||
|
||||
((eq action 'auto-update-manual)
|
||||
(docstring-auto-update-manual module description)
|
||||
(setq auto-updated-manual-list
|
||||
(cons (cons module description)
|
||||
auto-updated-manual-list))))
|
||||
|
||||
(cond ((eq issue 'check-needed)
|
||||
(setq check-needed-list
|
||||
(cons (cons module description)
|
||||
check-needed-list)))
|
||||
|
||||
((eq issue 'update-needed)
|
||||
(setq update-needed-list
|
||||
(cons (cons module description)
|
||||
update-needed-list)))
|
||||
|
||||
((eq issue 'consider-removal)
|
||||
(setq consider-removal-list
|
||||
(cons (cons module description)
|
||||
consider-removal-list)))))))
|
||||
(cdr module-list)))))
|
||||
alist)
|
||||
|
||||
;; Prepare a buffer describing the results.
|
||||
(set-buffer (get-buffer-create "*Docstring Results*"))
|
||||
(erase-buffer)
|
||||
|
||||
(insert "
|
||||
The following items have been automatically added to the manual in
|
||||
file `" docstring-manual-directory "/" docstring-new-docstrings-file "'.\n\n")
|
||||
(if added-to-manual-list
|
||||
(mapcar (function (lambda (moddesc)
|
||||
(insert (prin1-to-string (car moddesc))
|
||||
": "
|
||||
(cdr moddesc)
|
||||
"\n")))
|
||||
added-to-manual-list)
|
||||
(insert "(none)\n"))
|
||||
|
||||
(insert "
|
||||
The following items have been automatically updated in the manual.\n\n")
|
||||
(if auto-updated-manual-list
|
||||
(mapcar (function (lambda (moddesc)
|
||||
(insert (prin1-to-string (car moddesc))
|
||||
": "
|
||||
(cdr moddesc)
|
||||
"\n")))
|
||||
auto-updated-manual-list)
|
||||
(insert "(none)\n"))
|
||||
|
||||
(insert "
|
||||
The following items are already documented in the manual but are not
|
||||
mentioned in the reference copy of the snarfed docstrings file.
|
||||
You should check that the manual documentation matches the docstring
|
||||
in the current snarfed docstrings file.\n\n")
|
||||
(if check-needed-list
|
||||
(mapcar (function (lambda (moddesc)
|
||||
(insert (prin1-to-string (car moddesc))
|
||||
": "
|
||||
(cdr moddesc)
|
||||
"\n")))
|
||||
check-needed-list)
|
||||
(insert "(none)\n"))
|
||||
|
||||
(insert "
|
||||
The following items have manual documentation that is different from
|
||||
the docstring in the reference copy of the snarfed docstrings file,
|
||||
and the snarfed docstring has changed. You need to update the manual
|
||||
documentation by hand with reference to the snarfed docstring changes.\n\n")
|
||||
(if update-needed-list
|
||||
(mapcar (function (lambda (moddesc)
|
||||
(insert (prin1-to-string (car moddesc))
|
||||
": "
|
||||
(cdr moddesc)
|
||||
"\n")))
|
||||
update-needed-list)
|
||||
(insert "(none)\n"))
|
||||
|
||||
(insert "
|
||||
The following items are documented in the manual but are no longer
|
||||
present in the snarfed docstrings file. You should consider whether
|
||||
the existing manual documentation is still pertinent. If it is, its
|
||||
docstring module comment may need updating, to connect it with a
|
||||
new snarfed docstring file.\n\n")
|
||||
(if consider-removal-list
|
||||
(mapcar (function (lambda (moddesc)
|
||||
(insert (prin1-to-string (car moddesc))
|
||||
": "
|
||||
(cdr moddesc)
|
||||
"\n")))
|
||||
consider-removal-list)
|
||||
(insert "(none)\n"))
|
||||
(insert "\n")
|
||||
|
||||
(goto-char (point-min))
|
||||
|
||||
;; Popup the issues buffer.
|
||||
(let ((pop-up-frames t))
|
||||
(set-window-point (display-buffer (current-buffer))
|
||||
(point-min)))))
|
||||
|
||||
(defun docstring-process-current-buffer ()
|
||||
(interactive)
|
||||
(docstring-process-alist (make-module-description-list)))
|
||||
|
||||
(defun docstring-process-current-region (beg end)
|
||||
(interactive "r")
|
||||
(narrow-to-region beg end)
|
||||
(unwind-protect
|
||||
(save-excursion
|
||||
(docstring-process-alist (make-module-description-list)))
|
||||
(widen)))
|
||||
|
||||
(defun docstring-process-module (module)
|
||||
(interactive "xModule: ")
|
||||
(let ((modpath (module-to-path module))
|
||||
(mdlist nil))
|
||||
(mapcar (function (lambda (root)
|
||||
(let ((fn (concat root
|
||||
"/"
|
||||
modpath
|
||||
".texi")))
|
||||
(if (file-exists-p fn)
|
||||
(save-excursion
|
||||
(find-file fn)
|
||||
(message "Getting docstring list from %s" fn)
|
||||
(setq mdlist
|
||||
(append mdlist
|
||||
(make-module-description-list))))))))
|
||||
docstring-snarfed-roots)
|
||||
(docstring-process-alist mdlist)))
|
||||
|
||||
(defun docstring-ediff-this-line ()
|
||||
(interactive)
|
||||
(let (module
|
||||
description)
|
||||
(save-excursion
|
||||
(beginning-of-line)
|
||||
(setq module (read (current-buffer)))
|
||||
(forward-char 2)
|
||||
(setq description (buffer-substring (point)
|
||||
(progn
|
||||
(end-of-line)
|
||||
(point)))))
|
||||
|
||||
(message "Ediff docstring: %S: %s" module description)
|
||||
|
||||
(let ((track-location (or (find-tracking-docstring module description)
|
||||
(docstring-temp-location "No docstring in tracking file")))
|
||||
(snarf-location (or (find-snarfed-docstring module description)
|
||||
(docstring-temp-location "No docstring in snarfed file")))
|
||||
(manual-location (or (find-manual-docstring module description)
|
||||
(docstring-temp-location "No docstring in manual"))))
|
||||
|
||||
(setq docstring-ediff-buffers
|
||||
(list (car track-location)
|
||||
(car snarf-location)
|
||||
(car manual-location)))
|
||||
|
||||
(docstring-narrow-to-location track-location)
|
||||
(docstring-narrow-to-location snarf-location)
|
||||
(docstring-narrow-to-location manual-location)
|
||||
|
||||
(add-hook 'ediff-quit-hook 'docstring-widen-ediff-buffers)
|
||||
|
||||
(ediff-buffers3 (nth 0 docstring-ediff-buffers)
|
||||
(nth 1 docstring-ediff-buffers)
|
||||
(nth 2 docstring-ediff-buffers)))))
|
||||
|
||||
(defun docstring-narrow-to-location (location)
|
||||
(save-excursion
|
||||
(set-buffer (car location))
|
||||
(narrow-to-region (cadr location) (caddr location))))
|
||||
|
||||
(defun docstring-temp-location (str)
|
||||
(let ((buf (generate-new-buffer "*Docstring Temp*")))
|
||||
(save-excursion
|
||||
(set-buffer buf)
|
||||
(erase-buffer)
|
||||
(insert str "\n")
|
||||
(list buf (point-min) (point-max)))))
|
||||
|
||||
(require 'ediff)
|
||||
|
||||
(defvar docstring-ediff-buffers '())
|
||||
|
||||
(defun docstring-widen-ediff-buffers ()
|
||||
(remove-hook 'ediff-quit-hook 'docstring-widen-ediff-buffers)
|
||||
(save-excursion
|
||||
(mapcar (function (lambda (buffer)
|
||||
(set-buffer buffer)
|
||||
(widen)))
|
||||
docstring-ediff-buffers)))
|
||||
|
||||
|
||||
;;; Tests:
|
||||
|
||||
;(find-docstring "/home/neil/Guile/cvs/guile-core/doc/maint/guile.texi" nil "primitive sloppy-assq")
|
||||
;(find-manual-docstring '(guile) "primitive sloppy-assq")
|
||||
;(find-tracking-docstring '(guile) "primitive sloppy-assq")
|
||||
;(find-snarfed-docstring '(guile) "primitive sloppy-assq")
|
||||
|
||||
(provide 'docstring)
|
7087
doc/maint/guile.texi
Normal file
7087
doc/maint/guile.texi
Normal file
File diff suppressed because it is too large
Load diff
599
doc/new-docstrings.texi
Normal file
599
doc/new-docstrings.texi
Normal file
|
@ -0,0 +1,599 @@
|
|||
|
||||
@c module (guile)
|
||||
|
||||
@deffn primitive environment? obj
|
||||
Return @code{#t} if @var{obj} is an environment, or @code{#f}
|
||||
otherwise.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-bound? env sym
|
||||
Return @code{#t} if @var{sym} is bound in @var{env}, or
|
||||
@code{#f} otherwise.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-ref env sym
|
||||
Return the value of the location bound to @var{sym} in
|
||||
@var{env}. If @var{sym} is unbound in @var{env}, signal an
|
||||
@code{environment:unbound} error.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-fold env proc init
|
||||
Iterate over all the bindings in @var{env}, accumulating some
|
||||
value.
|
||||
For each binding in @var{env}, apply @var{proc} to the symbol
|
||||
bound, its value, and the result from the previous application
|
||||
of @var{proc}.
|
||||
Use @var{init} as @var{proc}'s third argument the first time
|
||||
@var{proc} is applied.
|
||||
If @var{env} contains no bindings, this function simply returns
|
||||
@var{init}.
|
||||
If @var{env} binds the symbol sym1 to the value val1, sym2 to
|
||||
val2, and so on, then this procedure computes:
|
||||
@example
|
||||
(proc sym1 val1
|
||||
(proc sym2 val2
|
||||
...
|
||||
(proc symn valn
|
||||
init)))
|
||||
@end example
|
||||
Each binding in @var{env} will be processed exactly once.
|
||||
@code{environment-fold} makes no guarantees about the order in
|
||||
which the bindings are processed.
|
||||
Here is a function which, given an environment, constructs an
|
||||
association list representing that environment's bindings,
|
||||
using environment-fold:
|
||||
@example
|
||||
(define (environment->alist env)
|
||||
(environment-fold env
|
||||
(lambda (sym val tail)
|
||||
(cons (cons sym val) tail))
|
||||
'()))
|
||||
@end example
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-define env sym val
|
||||
Bind @var{sym} to a new location containing @var{val} in
|
||||
@var{env}. If @var{sym} is already bound to another location
|
||||
in @var{env} and the binding is mutable, that binding is
|
||||
replaced. The new binding and location are both mutable. The
|
||||
return value is unspecified.
|
||||
If @var{sym} is already bound in @var{env}, and the binding is
|
||||
immutable, signal an @code{environment:immutable-binding} error.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-undefine env sym
|
||||
Remove any binding for @var{sym} from @var{env}. If @var{sym}
|
||||
is unbound in @var{env}, do nothing. The return value is
|
||||
unspecified.
|
||||
If @var{sym} is already bound in @var{env}, and the binding is
|
||||
immutable, signal an @code{environment:immutable-binding} error.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-set! env sym val
|
||||
If @var{env} binds @var{sym} to some location, change that
|
||||
location's value to @var{val}. The return value is
|
||||
unspecified.
|
||||
If @var{sym} is not bound in @var{env}, signal an
|
||||
@code{environment:unbound} error. If @var{env} binds @var{sym}
|
||||
to an immutable location, signal an
|
||||
@code{environment:immutable-location} error.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-cell env sym for_write
|
||||
Return the value cell which @var{env} binds to @var{sym}, or
|
||||
@code{#f} if the binding does not live in a value cell.
|
||||
The argument @var{for-write} indicates whether the caller
|
||||
intends to modify the variable's value by mutating the value
|
||||
cell. If the variable is immutable, then
|
||||
@code{environment-cell} signals an
|
||||
@code{environment:immutable-location} error.
|
||||
If @var{sym} is unbound in @var{env}, signal an
|
||||
@code{environment:unbound} error.
|
||||
If you use this function, you should consider using
|
||||
@code{environment-observe}, to be notified when @var{sym} gets
|
||||
re-bound to a new value cell, or becomes undefined.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-observe env proc
|
||||
Whenever @var{env}'s bindings change, apply @var{proc} to
|
||||
@var{env}.
|
||||
This function returns an object, token, which you can pass to
|
||||
@code{environment-unobserve} to remove @var{proc} from the set
|
||||
of procedures observing @var{env}. The type and value of
|
||||
token is unspecified.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-observe-weak env proc
|
||||
This function is the same as environment-observe, except that
|
||||
the reference @var{env} retains to @var{proc} is a weak
|
||||
reference. This means that, if there are no other live,
|
||||
non-weak references to @var{proc}, it will be
|
||||
garbage-collected, and dropped from @var{env}'s
|
||||
list of observing procedures.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive environment-unobserve token
|
||||
Cancel the observation request which returned the value
|
||||
@var{token}. The return value is unspecified.
|
||||
If a call @code{(environment-observe env proc)} returns
|
||||
@var{token}, then the call @code{(environment-unobserve token)}
|
||||
will cause @var{proc} to no longer be called when @var{env}'s
|
||||
bindings change.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive make-leaf-environment
|
||||
Create a new leaf environment, containing no bindings.
|
||||
All bindings and locations created in the new environment
|
||||
will be mutable.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive leaf-environment? object
|
||||
Return @code{#t} if object is a leaf environment, or @code{#f}
|
||||
otherwise.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive make-eval-environment local imported
|
||||
Return a new environment object eval whose bindings are the
|
||||
union of the bindings in the environments @var{local} and
|
||||
@var{imported}, with bindings from @var{local} taking
|
||||
precedence. Definitions made in eval are placed in @var{local}.
|
||||
Applying @code{environment-define} or
|
||||
@code{environment-undefine} to eval has the same effect as
|
||||
applying the procedure to @var{local}.
|
||||
Note that eval incorporates @var{local} and @var{imported} by
|
||||
reference:
|
||||
If, after creating eval, the program changes the bindings of
|
||||
@var{local} or @var{imported}, those changes will be visible
|
||||
in eval.
|
||||
Since most Scheme evaluation takes place in eval environments,
|
||||
they transparently cache the bindings received from @var{local}
|
||||
and @var{imported}. Thus, the first time the program looks up
|
||||
a symbol in eval, eval may make calls to @var{local} or
|
||||
@var{imported} to find their bindings, but subsequent
|
||||
references to that symbol will be as fast as references to
|
||||
bindings in finite environments.
|
||||
In typical use, @var{local} will be a finite environment, and
|
||||
@var{imported} will be an import environment
|
||||
@end deffn
|
||||
|
||||
@deffn primitive eval-environment? object
|
||||
Return @code{#t} if object is an eval environment, or @code{#f}
|
||||
otherwise.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive eval-environment-local env
|
||||
Return the local environment of eval environment @var{env}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive eval-environment-set-local! env local
|
||||
Change @var{env}'s local environment to @var{local}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive eval-environment-imported env
|
||||
Return the imported environment of eval environment @var{env}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive eval-environment-set-imported! env imported
|
||||
Change @var{env}'s imported environment to @var{imported}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive make-import-environment imports conflict_proc
|
||||
Return a new environment @var{imp} whose bindings are the union
|
||||
of the bindings from the environments in @var{imports};
|
||||
@var{imports} must be a list of environments. That is,
|
||||
@var{imp} binds a symbol to a location when some element of
|
||||
@var{imports} does.
|
||||
If two different elements of @var{imports} have a binding for
|
||||
the same symbol, the @var{conflict-proc} is called with the
|
||||
following parameters: the import environment, the symbol and
|
||||
the list of the imported environments that bind the symbol.
|
||||
If the @var{conflict-proc} returns an environment @var{env},
|
||||
the conflict is considered as resolved and the binding from
|
||||
@var{env} is used. If the @var{conflict-proc} returns some
|
||||
non-environment object, the conflict is considered unresolved
|
||||
and the symbol is treated as unspecified in the import
|
||||
environment.
|
||||
The checking for conflicts may be performed lazily, i. e. at
|
||||
the moment when a value or binding for a certain symbol is
|
||||
requested instead of the moment when the environment is
|
||||
created or the bindings of the imports change.
|
||||
All bindings in @var{imp} are immutable. If you apply
|
||||
@code{environment-define} or @code{environment-undefine} to
|
||||
@var{imp}, Guile will signal an
|
||||
@code{environment:immutable-binding} error. However,
|
||||
notice that the set of bindings in @var{imp} may still change,
|
||||
if one of its imported environments changes.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive import-environment? object
|
||||
Return @code{#t} if object is an import environment, or
|
||||
@code{#f} otherwise.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive import-environment-imports env
|
||||
Return the list of environments imported by the import
|
||||
environment @var{env}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive import-environment-set-imports! env imports
|
||||
Change @var{env}'s list of imported environments to
|
||||
@var{imports}, and check for conflicts.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive make-export-environment private signature
|
||||
Return a new environment @var{exp} containing only those
|
||||
bindings in private whose symbols are present in
|
||||
@var{signature}. The @var{private} argument must be an
|
||||
environment.
|
||||
|
||||
The environment @var{exp} binds symbol to location when
|
||||
@var{env} does, and symbol is exported by @var{signature}.
|
||||
|
||||
@var{signature} is a list specifying which of the bindings in
|
||||
@var{private} should be visible in @var{exp}. Each element of
|
||||
@var{signature} should be a list of the form:
|
||||
(symbol attribute ...)
|
||||
where each attribute is one of the following:
|
||||
@table @asis
|
||||
@item the symbol @code{mutable-location}
|
||||
@var{exp} should treat the
|
||||
location bound to symbol as mutable. That is, @var{exp}
|
||||
will pass calls to @code{environment-set!} or
|
||||
@code{environment-cell} directly through to private.
|
||||
@item the symbol @code{immutable-location}
|
||||
@var{exp} should treat
|
||||
the location bound to symbol as immutable. If the program
|
||||
applies @code{environment-set!} to @var{exp} and symbol, or
|
||||
calls @code{environment-cell} to obtain a writable value
|
||||
cell, @code{environment-set!} will signal an
|
||||
@code{environment:immutable-location} error. Note that, even
|
||||
if an export environment treats a location as immutable, the
|
||||
underlying environment may treat it as mutable, so its
|
||||
value may change.
|
||||
@end table
|
||||
It is an error for an element of signature to specify both
|
||||
@code{mutable-location} and @code{immutable-location}. If
|
||||
neither is specified, @code{immutable-location} is assumed.
|
||||
|
||||
As a special case, if an element of signature is a lone
|
||||
symbol @var{sym}, it is equivalent to an element of the form
|
||||
@code{(sym)}.
|
||||
|
||||
All bindings in @var{exp} are immutable. If you apply
|
||||
@code{environment-define} or @code{environment-undefine} to
|
||||
@var{exp}, Guile will signal an
|
||||
@code{environment:immutable-binding} error. However,
|
||||
notice that the set of bindings in @var{exp} may still change,
|
||||
if the bindings in private change.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive export-environment? object
|
||||
Return @code{#t} if object is an export environment, or
|
||||
@code{#f} otherwise.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive export-environment-private env
|
||||
Return the private environment of export environment @var{env}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive export-environment-set-private! env private
|
||||
Change the private environment of export environment @var{env}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive export-environment-signature env
|
||||
Return the signature of export environment @var{env}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive export-environment-set-signature! env signature
|
||||
Change the signature of export environment @var{env}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %compute-slots class
|
||||
Return a list consisting of the names of all slots belonging to
|
||||
class @var{class}, i. e. the slots of @var{class} and of all of
|
||||
its superclasses.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive get-keyword key l default_value
|
||||
Determine an associated value for the keyword @var{key} from
|
||||
the list @var{l}. The list @var{l} has to consist of an even
|
||||
number of elements, where, starting with the first, every
|
||||
second element is a keyword, followed by its associated value.
|
||||
If @var{l} does not hold a value for @var{key}, the value
|
||||
@var{default_value} is returned.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-ref-using-class class obj slot_name
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-set-using-class! class obj slot_name value
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-of x
|
||||
Return the class of @var{x}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %goops-loaded
|
||||
Announce that GOOPS is loaded and perform initialization
|
||||
on the C level which depends on the loaded GOOPS modules.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %method-more-specific? m1 m2 targs
|
||||
@end deffn
|
||||
|
||||
@deffn primitive find-method . l
|
||||
@end deffn
|
||||
|
||||
@deffn primitive primitive-generic-generic subr
|
||||
@end deffn
|
||||
|
||||
@deffn primitive enable-primitive-generic! . subrs
|
||||
@end deffn
|
||||
|
||||
@deffn primitive generic-capability? proc
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %invalidate-method-cache! gf
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %invalidate-class class
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %modify-class old new
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %modify-instance old new
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %set-object-setter! obj setter
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %allocate-instance class initargs
|
||||
Create a new instance of class @var{class} and initialize it
|
||||
from the arguments @var{initargs}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-exists? obj slot_name
|
||||
Return @code{#t} if @var{obj} has a slot named @var{slot_name}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-bound? obj slot_name
|
||||
Return @code{#t} if the slot named @var{slot_name} of @var{obj}
|
||||
is bound.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-set! obj slot_name value
|
||||
Set the slot named @var{slot_name} of @var{obj} to @var{value}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-exists-using-class? class obj slot_name
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-bound-using-class? class obj slot_name
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %fast-slot-set! obj index value
|
||||
Set the slot with index @var{index} in @var{obj} to
|
||||
@var{value}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %fast-slot-ref obj index
|
||||
Return the slot value with index @var{index} from @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive @@assert-bound-ref obj index
|
||||
Like @code{assert-bound}, but use @var{index} for accessing
|
||||
the value from @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive assert-bound value obj
|
||||
Return @var{value} if it is bound, and invoke the
|
||||
@var{slot-unbound} method of @var{obj} if it is not.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive unbound? obj
|
||||
Return @code{#t} if @var{obj} is unbound.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive make-unbound
|
||||
Return the unbound value.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive accessor-method-slot-definition obj
|
||||
Return the slot definition of the accessor @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive method-procedure obj
|
||||
Return the procedure of the method @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive method-specializers obj
|
||||
Return specializers of the method @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive method-generic-function obj
|
||||
Return the generic function fot the method @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive generic-function-methods obj
|
||||
Return the methods of the generic function @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive generic-function-name obj
|
||||
Return the name of the generic function @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-environment obj
|
||||
Return the environment of the class @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-slots obj
|
||||
Return the slot list of the class @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-precedence-list obj
|
||||
Return the class precedence list of the class @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-direct-methods obj
|
||||
Return the direct methods of the class @var{obj}
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-direct-subclasses obj
|
||||
Return the direct subclasses of the class @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-direct-slots obj
|
||||
Return the direct slots of the class @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-direct-supers obj
|
||||
Return the direct superclasses of the class @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive class-name obj
|
||||
Return the class name of @var{obj}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive instance? obj
|
||||
Return @code{#t} if @var{obj} is an instance.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %inherit-magic! class dsupers
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %prep-layout! class
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %initialize-object obj initargs
|
||||
Initialize the object @var{obj} with the given arguments
|
||||
@var{initargs}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive make . args
|
||||
Make a new object. @var{args} must contain the class and
|
||||
all necessary initialization information.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive slot-ref obj slot_name
|
||||
Return the value from @var{obj}'s slot with the name
|
||||
@var{slot_name}.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive builtin-bindings
|
||||
Create and return a copy of the global symbol table, removing all
|
||||
unbound symbols.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive object->string obj [printer]
|
||||
Return a Scheme string obtained by printing @var{obj}.
|
||||
Printing function can be specified by the optional second
|
||||
argument @var{printer} (default: @code{write}).
|
||||
@end deffn
|
||||
|
||||
@deffn primitive gethostname
|
||||
Return the host name of the current processor.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive sethostname name
|
||||
Set the host name of the current processor to @var{name}. May
|
||||
only be used by the superuser. The return value is not
|
||||
specified.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive flock file operation
|
||||
Apply or remove an advisory lock on an open file.
|
||||
@var{operation} specifies the action to be done:
|
||||
@table @code
|
||||
@item LOCK_SH
|
||||
Shared lock. More than one process may hold a shared lock
|
||||
for a given file at a given time.
|
||||
@item LOCK_EX
|
||||
Exclusive lock. Only one process may hold an exclusive lock
|
||||
for a given file at a given time.
|
||||
@item LOCK_UN
|
||||
Unlock the file.
|
||||
@item LOCK_NB
|
||||
Don't block when locking. May be specified by bitwise OR'ing
|
||||
it to one of the other operations.
|
||||
@end table
|
||||
The return value is not specified. @var{file} may be an open
|
||||
file descriptor or an open file descriptior port.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive getpass prompt
|
||||
Display @var{prompt} to the standard error output and read
|
||||
a password from @file{/dev/tty}. If this file is not
|
||||
accessible, it reads from standard input. The password may be
|
||||
up to 127 characters in length. Additional characters and the
|
||||
terminating newline character are discarded. While reading
|
||||
the password, echoing and the generation of signals by special
|
||||
characters is disabled.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive setpriority which who prio
|
||||
Set the scheduling priority of the process, process group
|
||||
or user, as indicated by @var{which} and @var{who}. @var{which}
|
||||
is one of the variables @code{PRIO_PROCESS}, @code{PRIO_PGRP}
|
||||
or @code{PRIO_USER}, and @var{who} is interpreted relative to
|
||||
@var{which} (a process identifier for @code{PRIO_PROCESS},
|
||||
process group identifier for @code{PRIO_PGRP}, and a user
|
||||
identifier for @code{PRIO_USER}. A zero value of @var{who}
|
||||
denotes the current process, process group, or user.
|
||||
@var{prio} is a value in the range -20 and 20, the default
|
||||
priority is 0; lower priorities cause more favorable
|
||||
scheduling. Sets the priority of all of the specified
|
||||
processes. Only the super-user may lower priorities.
|
||||
The return value is not specified.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive getpriority which who
|
||||
Return the scheduling priority of the process, process group
|
||||
or user, as indicated by @var{which} and @var{who}. @var{which}
|
||||
is one of the variables @code{PRIO_PROCESS}, @code{PRIO_PGRP}
|
||||
or @code{PRIO_USER}, and @var{who} is interpreted relative to
|
||||
@var{which} (a process identifier for @code{PRIO_PROCESS},
|
||||
process group identifier for @code{PRIO_PGRP}, and a user
|
||||
identifier for @code{PRIO_USER}. A zero value of @var{who}
|
||||
denotes the current process, process group, or user. Return
|
||||
the highest priority (lowest numerical value) of any of the
|
||||
specified processes.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive cuserid
|
||||
Return a string containing a user name associated with the
|
||||
effective user id of the process. Return @code{#f} if this
|
||||
information cannot be obtained.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive getlogin
|
||||
Return a string containing the name of the user logged in on
|
||||
the controlling terminal of the process, or @code{#f} if this
|
||||
information cannot be obtained.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive chroot path
|
||||
Change the root directory to that specified in @var{path}.
|
||||
This directory will be used for path names beginning with
|
||||
@file{/}. The root directory is inherited by all children
|
||||
of the current process. Only the superuser may change the
|
||||
root directory.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive crypt key salt
|
||||
Encrypt @var{key} using @var{salt} as the salt value to the
|
||||
crypt(3) library call
|
||||
@end deffn
|
||||
|
||||
@deffn primitive mkstemp! tmpl
|
||||
mkstemp creates a new unique file in the file system and
|
||||
returns a new buffered port open for reading and writing to
|
||||
the file. @var{tmpl} is a string specifying where the
|
||||
file should be created: it must end with @code{XXXXXX}
|
||||
and will be changed in place to return the name of the
|
||||
temporary file.
|
||||
@end deffn
|
||||
|
||||
@deffn primitive %tag-body body
|
||||
Internal GOOPS magic---don't use this function!
|
||||
@end deffn
|
|
@ -760,9 +760,11 @@ The return value is unspecified.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "tmpnam")
|
||||
@deffn primitive tmpnam
|
||||
Create a new file in the file system with a unique name. The return
|
||||
value is the name of the new file. This function is implemented with
|
||||
the @code{tmpnam} function in the system libraries.
|
||||
tmpnam returns a name in the file system that does not match
|
||||
any existing file. However there is no guarantee that
|
||||
another process will not create the file after tmpnam
|
||||
is called. Care should be taken if opening the file,
|
||||
e.g., use the O_EXCL open flag or use @code{mkstemp!} instead.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "dirname")
|
||||
|
@ -1469,8 +1471,8 @@ of seconds remaining otherwise.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "usleep")
|
||||
@deffn primitive usleep i
|
||||
Sleep for I microseconds.
|
||||
`usleep' is not available on all platforms.
|
||||
Sleep for I microseconds. @code{usleep} is not available on
|
||||
all platforms.
|
||||
@end deffn
|
||||
|
||||
@node Terminals and Ptys
|
||||
|
|
|
@ -274,8 +274,8 @@ completely invisible to the Scheme level programmer.
|
|||
@c on the C level, where the conversion is not so automatic - NJ
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "integer?")
|
||||
@deffn primitive integer? obj
|
||||
Return @code{#t} if @var{obj} is an integer number, @code{#f} else.
|
||||
@deffn primitive integer? x
|
||||
Return @code{#t} if @var{x} is an integer number, @code{#f} else.
|
||||
|
||||
@lisp
|
||||
(integer? 487)
|
||||
|
@ -343,11 +343,13 @@ if @var{obj} is an integer number or a rational number.
|
|||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "rational?")
|
||||
@deffn primitive rational? obj
|
||||
Return @code{#t} if @var{obj} is a rational number, @code{#f} else.
|
||||
Note that the set of integer values forms a subset of the set of
|
||||
rational numbers, so the predicate will also be fulfilled if @var{obj}
|
||||
is an integer number.
|
||||
@deffn primitive rational? x
|
||||
Return @code{#t} if @var{x} is a rational number, @code{#f}
|
||||
else. Note that the set of integer values forms a subset of
|
||||
the set of rational numbers, i. e. the predicate will also be
|
||||
fulfilled if @var{x} is an integer number. Real numbers
|
||||
will also satisfy this predicate, because of their limited
|
||||
precision.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
@ -379,11 +381,12 @@ real, so the real and imaginary parts of a complex number have the same
|
|||
properties of inexactness and limited precision as single real numbers.
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "complex?")
|
||||
@deffn primitive complex? obj
|
||||
Return @code{#t} if @var{obj} is a complex number, @code{#f} else.
|
||||
Note that the sets of real, rational and integer values form subsets of
|
||||
the set of complex numbers, so the predicate will also be fulfilled if
|
||||
@var{obj} is a real, rational or integer number.
|
||||
@deffn primitive complex? x
|
||||
Return @code{#t} if @var{x} is a complex number, @code{#f}
|
||||
else. Note that the sets of real, rational and integer
|
||||
values form subsets of the set of complex numbers, i. e. the
|
||||
predicate will also be fulfilled if @var{x} is a real,
|
||||
rational or integer number.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
@ -404,12 +407,14 @@ an invocation of the @code{inexact->exact} procedure.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "exact?")
|
||||
@deffn primitive exact? x
|
||||
Return #t if X is an exact number, #f otherwise.
|
||||
Return @code{#t} if @var{x} is an exact number, @code{#f}
|
||||
otherwise.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "inexact?")
|
||||
@deffn primitive inexact? x
|
||||
Return #t if X is an inexact number, #f else.
|
||||
Return @code{#t} if @var{x} is an inexact number, @code{#f}
|
||||
else.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "inexact->exact")
|
||||
|
@ -502,12 +507,14 @@ multiplying by 10^N.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "odd?")
|
||||
@deffn primitive odd? n
|
||||
Return #t if N is an odd number, #f otherwise.
|
||||
Return @code{#t} if @var{n} is an odd number, @code{#f}
|
||||
otherwise.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "even?")
|
||||
@deffn primitive even? n
|
||||
Return #t if N is an even number, #f otherwise.
|
||||
Return @code{#t} if @var{n} is an even number, @code{#f}
|
||||
otherwise.
|
||||
@end deffn
|
||||
|
||||
@c begin (texi-doc-string "guile" "quotient")
|
||||
|
@ -608,19 +615,20 @@ zero.
|
|||
@c docstring begin (texi-doc-string "guile" "number->string")
|
||||
@deffn primitive number->string n [radix]
|
||||
Return a string holding the external representation of the
|
||||
number N in the given RADIX. If N is inexact, a radix of 10
|
||||
will be used.
|
||||
number @var{n} in the given @var{radix}. If @var{n} is
|
||||
inexact, a radix of 10 will be used.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "string->number")
|
||||
@deffn primitive string->number string [radix]
|
||||
Returns a number of the maximally precise representation
|
||||
expressed by the given STRING. RADIX must be an exact integer,
|
||||
either 2, 8, 10, or 16. If supplied, RADIX is a default radix
|
||||
that may be overridden by an explicit radix prefix in STRING
|
||||
(e.g. "#o177"). If RADIX is not supplied, then the default
|
||||
radix is 10. If string is not a syntactically valid notation
|
||||
for a number, then `string->number' returns #f. (r5rs)
|
||||
expressed by the given @var{string}. @var{radix} must be an
|
||||
exact integer, either 2, 8, 10, or 16. If supplied, @var{radix}
|
||||
is a default radix that may be overridden by an explicit radix
|
||||
prefix in @var{string} (e.g. "#o177"). If @var{radix} is not
|
||||
supplied, then the default radix is 10. If string is not a
|
||||
syntactically valid notation for a number, then
|
||||
@code{string->number} returns @code{#f}.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
@ -635,13 +643,13 @@ for a number, then `string->number' returns #f. (r5rs)
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "make-rectangular")
|
||||
@deffn primitive make-rectangular real imaginary
|
||||
Return a complex number constructed of the given REAL and
|
||||
IMAGINARY parts.
|
||||
Return a complex number constructed of the given @var{real} and
|
||||
@var{imaginary} parts.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "make-polar")
|
||||
@deffn primitive make-polar x y
|
||||
Return the complex number X * e^(i * Y).
|
||||
Return the complex number @var{x} * e^(i * @var{y}).
|
||||
@end deffn
|
||||
|
||||
@c begin (texi-doc-string "guile" "real-part")
|
||||
|
@ -1026,15 +1034,16 @@ Example:
|
|||
@c ARGFIXME n/int cnt/count
|
||||
@c docstring begin (texi-doc-string "guile" "ash")
|
||||
@deffn primitive ash n cnt
|
||||
The function ash performs an arithmetic shift left by CNT bits
|
||||
(or shift right, if CNT is negative). 'Arithmetic' means, that
|
||||
the function does not guarantee to keep the bit structure of N,
|
||||
but rather guarantees that the result will always be rounded
|
||||
towards minus infinity. Therefore, the results of ash and a
|
||||
corresponding bitwise shift will differ if N is negative.
|
||||
The function ash performs an arithmetic shift left by @var{CNT}
|
||||
bits (or shift right, if @var{cnt} is negative).
|
||||
'Arithmetic' means, that the function does not guarantee to
|
||||
keep the bit structure of @var{n}, but rather guarantees that
|
||||
the result will always be rounded towards minus infinity.
|
||||
Therefore, the results of ash and a corresponding bitwise
|
||||
shift will differ if N is negative.
|
||||
|
||||
Formally, the function returns an integer equivalent to
|
||||
@code{(inexact->exact (floor (* N (expt 2 CNT))))}.@refill
|
||||
@code{(inexact->exact (floor (* @var{n} (expt 2 @var{cnt}))))}.
|
||||
|
||||
Example:
|
||||
@lisp
|
||||
|
@ -1481,7 +1490,7 @@ a portion of the string. This procedure essentially implements the
|
|||
|
||||
(qdocs:) Returns the index of @var{char} in @var{str}, or @code{#f} if the
|
||||
@var{char} isn't in @var{str}. If @var{frm} is given and not @code{#f},
|
||||
it is used as the starting index; if @var{to} is given and not @var{#f},
|
||||
it is used as the starting index; if @var{to} is given and not @code{#f},
|
||||
it is used as the ending index (exclusive).
|
||||
|
||||
@example
|
||||
|
@ -1695,7 +1704,7 @@ Capitalize every character in @code{str}.
|
|||
@c docstring begin (texi-doc-string "guile" "string-ci<=?")
|
||||
@deffn primitive string-ci<=? s1 s2
|
||||
Case insensitive lexicographic ordering predicate;
|
||||
returns @t{#t} if @var{s1} is lexicographically less than
|
||||
returns @code{#t} if @var{s1} is lexicographically less than
|
||||
or equal to @var{s2} regardless of case. (r5rs)
|
||||
@end deffn
|
||||
|
||||
|
@ -1703,72 +1712,77 @@ or equal to @var{s2} regardless of case. (r5rs)
|
|||
@c docstring begin (texi-doc-string "guile" "string-ci<?")
|
||||
@deffn primitive string-ci<? s1 s2
|
||||
Case insensitive lexicographic ordering predicate;
|
||||
returns @t{#t} if @var{s1} is lexicographically less than
|
||||
returns @code{#t} if @var{s1} is lexicographically less than
|
||||
@var{s2} regardless of case. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string-ci=?
|
||||
@c docstring begin (texi-doc-string "guile" "string-ci=?")
|
||||
@deffn primitive string-ci=? s1 s2
|
||||
Case-insensitive string equality predicate; returns @t{#t} if
|
||||
the two strings are the same length and their component characters
|
||||
match (ignoring case) at each position; otherwise returns @t{#f}. (r5rs)
|
||||
Case-insensitive string equality predicate; returns @code{#t}
|
||||
if the two strings are the same length and their component
|
||||
characters match (ignoring case) at each position; otherwise
|
||||
returns @code{#f}. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string-ci>=?
|
||||
@c docstring begin (texi-doc-string "guile" "string-ci>=?")
|
||||
@deffn primitive string-ci>=? s1 s2
|
||||
Case insensitive lexicographic ordering predicate;
|
||||
returns @t{#t} if @var{s1} is lexicographically greater than
|
||||
or equal to @var{s2} regardless of case. (r5rs)
|
||||
returns @code{#t} if @var{s1} is lexicographically greater
|
||||
than or equal to @var{s2} regardless of case. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string-ci>?
|
||||
@c docstring begin (texi-doc-string "guile" "string-ci>?")
|
||||
@deffn primitive string-ci>? s1 s2
|
||||
Case insensitive lexicographic ordering predicate;
|
||||
returns @t{#t} if @var{s1} is lexicographically greater than
|
||||
@var{s2} regardless of case. (r5rs)
|
||||
returns @code{#t} if @var{s1} is lexicographically greater
|
||||
than @var{s2} regardless of case. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string<=?
|
||||
@c docstring begin (texi-doc-string "guile" "string<=?")
|
||||
@deffn primitive string<=? s1 s2
|
||||
Lexicographic ordering predicate; returns @t{#t} if @var{s1}
|
||||
is lexicographically less than or equal to @var{s2}. (r5rs)
|
||||
Lexicographic ordering predicate; returns @code{#t} if
|
||||
@var{s1} is lexicographically less than or equal to @var{s2}.
|
||||
(r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string<?
|
||||
@c docstring begin (texi-doc-string "guile" "string<?")
|
||||
@deffn primitive string<? s1 s2
|
||||
Lexicographic ordering predicate; returns @t{#t} if @var{s1}
|
||||
is lexicographically less than @var{s2}. (r5rs)
|
||||
Lexicographic ordering predicate; returns @code{#t} if
|
||||
@var{s1} is lexicographically less than @var{s2}. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string=?
|
||||
@c docstring begin (texi-doc-string "guile" "string=?")
|
||||
@deffn primitive string=? s1 s2
|
||||
Lexicographic equality predicate;
|
||||
Returns @t{#t} if the two strings are the same length and contain the same
|
||||
characters in the same positions, otherwise returns @t{#f}. (r5rs)
|
||||
Returns @code{#t} if the two strings are the same length and
|
||||
contain the same characters in the same positions, otherwise
|
||||
returns @code{#f}. (r5rs)
|
||||
|
||||
@samp{String-ci=?} treats
|
||||
upper and lower case letters as though they were the same character, but
|
||||
@samp{string=?} treats upper and lower case as distinct characters.
|
||||
The procedure @code{string-ci=?} treats upper and lower case
|
||||
letters as though they were the same character, but
|
||||
@code{string=?} treats upper and lower case as distinct
|
||||
characters.
|
||||
@end deffn
|
||||
|
||||
@r5index string>=?
|
||||
@c docstring begin (texi-doc-string "guile" "string>=?")
|
||||
@deffn primitive string>=? s1 s2
|
||||
Lexicographic ordering predicate; returns @t{#t} if @var{s1}
|
||||
is lexicographically greater than or equal to @var{s2}. (r5rs)
|
||||
Lexicographic ordering predicate; returns @code{#t} if
|
||||
@var{s1} is lexicographically greater than or equal to
|
||||
@var{s2}. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string>?
|
||||
@c docstring begin (texi-doc-string "guile" "string>?")
|
||||
@deffn primitive string>? s1 s2
|
||||
Lexicographic ordering predicate; returns @t{#t} if @var{s1}
|
||||
is lexicographically greater than @var{s2}. (r5rs)
|
||||
Lexicographic ordering predicate; returns @code{#t} if
|
||||
@var{s1} is lexicographically greater than @var{s2}. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index string->list
|
||||
|
@ -2452,57 +2466,48 @@ Returns the symbol whose name is @var{string}. This procedure can
|
|||
create symbols with names containing special characters or letters in
|
||||
the non-standard case, but it is usually a bad idea to create such
|
||||
symbols because in some implementations of Scheme they cannot be read as
|
||||
themselves. See @samp{symbol->string}.
|
||||
themselves. See @code{symbol->string}.
|
||||
|
||||
The following examples assume that the implementation's standard case is
|
||||
lower case:
|
||||
The following examples assume that the implementation's
|
||||
standard case is lower case:
|
||||
|
||||
@format
|
||||
@t{(eq? 'mISSISSIppi 'mississippi)
|
||||
==> #t
|
||||
(string->symbol "mISSISSIppi")
|
||||
==>
|
||||
@r{}the symbol with name "mISSISSIppi"
|
||||
(eq? 'bitBlt (string->symbol "bitBlt"))
|
||||
==> #f
|
||||
@lisp
|
||||
(eq? 'mISSISSIppi 'mississippi) @result{} #t
|
||||
(string->symbol "mISSISSIppi") @result{} @r{the symbol with name "mISSISSIppi"}
|
||||
(eq? 'bitBlt (string->symbol "bitBlt")) @result{} #f
|
||||
(eq? 'JollyWog
|
||||
(string->symbol
|
||||
(symbol->string 'JollyWog)))
|
||||
==> #t
|
||||
(string->symbol (symbol->string 'JollyWog))) @result{} #t
|
||||
(string=? "K. Harper, M.D."
|
||||
(symbol->string
|
||||
(string->symbol "K. Harper, M.D.")))
|
||||
==> #t
|
||||
}
|
||||
@end format
|
||||
(symbol->string
|
||||
(string->symbol "K. Harper, M.D."))) @result{}#t
|
||||
@end lisp
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "symbol->string")
|
||||
@deffn primitive symbol->string symbol
|
||||
Returns the name of @var{symbol} as a string. If the symbol was part of
|
||||
an object returned as the value of a literal expression (section
|
||||
@pxref{Literal expressions,,,r4rs, The Revised^4 Report on Scheme}) or
|
||||
by a call to the @samp{read} procedure, and its name contains alphabetic
|
||||
characters, then the string returned will contain characters in the
|
||||
implementation's preferred standard case---some implementations will
|
||||
prefer upper case, others lower case. If the symbol was returned by
|
||||
@samp{string->symbol}, the case of characters in the string returned
|
||||
will be the same as the case in the string that was passed to
|
||||
@samp{string->symbol}. It is an error to apply mutation procedures like
|
||||
@code{string-set!} to strings returned by this procedure. (r5rs)
|
||||
@deffn primitive symbol->string s
|
||||
Returns the name of @var{symbol} as a string. If the symbol
|
||||
was part of an object returned as the value of a literal
|
||||
expression (section @pxref{Literal expressions,,,r4rs, The
|
||||
Revised^4 Report on Scheme}) or by a call to the @code{read}
|
||||
procedure, and its name contains alphabetic characters, then
|
||||
the string returned will contain characters in the
|
||||
implementation's preferred standard case---some implementations
|
||||
will prefer upper case, others lower case. If the symbol was
|
||||
returned by @code{string->symbol}, the case of characters in
|
||||
the string returned will be the same as the case in the string
|
||||
that was passed to @code{string->symbol}. It is an error to
|
||||
apply mutation procedures like @code{string-set!} to strings
|
||||
returned by this procedure. (r5rs)
|
||||
|
||||
The following examples assume that the implementation's standard case is
|
||||
lower case:
|
||||
The following examples assume that the implementation's
|
||||
standard case is lower case:
|
||||
|
||||
@format
|
||||
@t{(symbol->string 'flying-fish)
|
||||
==> "flying-fish"
|
||||
(symbol->string 'Martin) ==> "martin"
|
||||
@lisp
|
||||
(symbol->string 'flying-fish) @result{} "flying-fish"
|
||||
(symbol->string 'Martin) @result{} "martin"
|
||||
(symbol->string
|
||||
(string->symbol "Malvina"))
|
||||
==> "Malvina"
|
||||
}
|
||||
@end format
|
||||
(string->symbol "Malvina")) @result{} "Malvina"
|
||||
@end lisp
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "symbol-binding")
|
||||
|
@ -2515,11 +2520,12 @@ use the global symbol table. If @var{string} is not interned in
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "symbol-bound?")
|
||||
@deffn primitive symbol-bound? obarray string
|
||||
Return @var{#t} if @var{obarray} contains a symbol with name
|
||||
Return @code{#t} if @var{obarray} contains a symbol with name
|
||||
@var{string} bound to a defined value. This differs from
|
||||
@var{symbol-interned?} in that the mere mention of a symbol usually causes
|
||||
it to be interned; @code{symbol-bound?} determines whether a symbol has
|
||||
been given any meaningful value.
|
||||
@var{symbol-interned?} in that the mere mention of a symbol
|
||||
usually causes it to be interned; @code{symbol-bound?}
|
||||
determines whether a symbol has been given any meaningful
|
||||
value.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "symbol-fref")
|
||||
|
@ -2539,8 +2545,8 @@ Return a hash value for @var{symbol}.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "symbol-interned?")
|
||||
@deffn primitive symbol-interned? obarray string
|
||||
Return @var{#t} if @var{obarray} contains a symbol with name
|
||||
@var{string}, and @var{#f} otherwise.
|
||||
Return @code{#t} if @var{obarray} contains a symbol with name
|
||||
@var{string}, and @code{#f} otherwise.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "symbol-pref")
|
||||
|
@ -2562,7 +2568,8 @@ in @var{obarray}.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "symbol?")
|
||||
@deffn primitive symbol? obj
|
||||
Returns @t{#t} if @var{obj} is a symbol, otherwise returns @t{#f}. (r5rs)
|
||||
Returns @code{#t} if @var{obj} is a symbol, otherwise returns
|
||||
@code{#f}. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "unintern-symbol")
|
||||
|
@ -2905,53 +2912,51 @@ by @code{set-cdr!} is unspecified.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "list")
|
||||
@deffn primitive list . objs
|
||||
Return a list containing OBJS, the arguments to `list'.
|
||||
Return a list containing @var{objs}, the arguments to
|
||||
@code{list}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "cons*")
|
||||
@deffn primitive cons* arg . rest
|
||||
@deffnx primitive list* arg . rest
|
||||
Like `list', but the last arg provides the tail of the constructed list,
|
||||
returning (cons ARG1 (cons ARG2 (cons ... ARGn))).
|
||||
Requires at least one argument. If given one argument, that argument
|
||||
is returned as result.
|
||||
This function is called `list*' in some other Schemes and in Common LISP.
|
||||
Like @code{list}, but the last arg provides the tail of the
|
||||
constructed list, returning @code{(cons @var{arg1} (cons
|
||||
@var{arg2} (cons @dots{} @var{argn}))). Requires at least one
|
||||
argument. If given one argument, that argument is returned as
|
||||
result. This function is called @code{list*} in some other
|
||||
Schemes and in Common LISP.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "list?")
|
||||
@deffn primitive list? x
|
||||
Return #t iff X is a proper list, else #f.
|
||||
Return @code{#t} iff @var{x} is a proper list, else @code{#f}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "null?")
|
||||
@deffn primitive null? x
|
||||
Return #t iff X is the empty list, else #f.
|
||||
Return @code{#t} iff @var{x} is the empty list, else @code{#f}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "length")
|
||||
@deffn primitive length lst
|
||||
Return the number of elements in list LST.
|
||||
Return the number of elements in list @var{lst}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "append")
|
||||
@deffn primitive append . args
|
||||
Returns a list consisting of the elements of the first LIST
|
||||
followed by the elements of the other LISTs.
|
||||
|
||||
Return a list consisting of the elements the lists passed as
|
||||
arguments.
|
||||
@example
|
||||
(append '(x) '(y)) => (x y)
|
||||
(append '(a) '(b c d)) => (a b c d)
|
||||
(append '(a (b)) '((c))) => (a (b) (c))
|
||||
(append '(x) '(y)) @result{} (x y)
|
||||
(append '(a) '(b c d)) @result{} (a b c d)
|
||||
(append '(a (b)) '((c))) @result{} (a (b) (c))
|
||||
@end example
|
||||
|
||||
The resulting list is always newly allocated, except that it shares
|
||||
structure with the last LIST argument. The last argument may
|
||||
actually be any object; an improper list results if the last
|
||||
argument is not a proper list.
|
||||
|
||||
The resulting list is always newly allocated, except that it
|
||||
shares structure with the last list argument. The last
|
||||
argument may actually be any object; an improper list results
|
||||
if the last argument is not a proper list.
|
||||
@example
|
||||
(append '(a b) '(c . d)) => (a b c . d)
|
||||
(append '() 'a) => a
|
||||
(append '(a b) '(c . d)) @result{} (a b c . d)
|
||||
(append '() 'a) @result{} a
|
||||
@end example
|
||||
@end deffn
|
||||
|
||||
|
@ -2972,7 +2977,8 @@ Return a pointer to the last pair in @var{lst}, signalling an error if
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "reverse")
|
||||
@deffn primitive reverse lst
|
||||
Return a new list that contains the elements of LST but in reverse order.
|
||||
Return a new list that contains the elements of @var{lst} but
|
||||
in reverse order.
|
||||
@end deffn
|
||||
|
||||
@c NJFIXME explain new_tail
|
||||
|
@ -2993,7 +2999,7 @@ of the modified list is not lost, it is wise to save the return value of
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "list-ref")
|
||||
@deffn primitive list-ref list k
|
||||
Return the Kth element from LIST.
|
||||
Return the @var{k}th element from @var{list}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "list-set!")
|
||||
|
@ -3031,53 +3037,56 @@ Return a (newly-created) copy of @var{lst}.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "memq")
|
||||
@deffn primitive memq x lst
|
||||
Return the first sublist of LST whose car is `eq?' to X
|
||||
where the sublists of LST are the non-empty lists returned
|
||||
by `(list-tail LST K)' for K less than the length of LST. If
|
||||
X does not occur in LST, then `#f' (not the empty list) is
|
||||
Return the first sublist of @var{lst} whose car is @code{eq?}
|
||||
to @var{x} where the sublists of @var{lst} are the non-empty
|
||||
lists returned by @code{(list-tail @var{lst} @var{k})} for
|
||||
@var{k} less than the length of @var{lst}. If @var{x} does not
|
||||
occur in @var{lst}, then @code{#f} (not the empty list) is
|
||||
returned.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "memv")
|
||||
@deffn primitive memv x lst
|
||||
Return the first sublist of LST whose car is `eqv?' to X
|
||||
where the sublists of LST are the non-empty lists returned
|
||||
by `(list-tail LST K)' for K less than the length of LST. If
|
||||
X does not occur in LST, then `#f' (not the empty list) is
|
||||
Return the first sublist of @var{lst} whose car is @code{eqv?}
|
||||
to @var{x} where the sublists of @var{lst} are the non-empty
|
||||
lists returned by @code{(list-tail @var{lst} @var{k})} for
|
||||
@var{k} less than the length of @var{lst}. If @var{x} does not
|
||||
occur in @var{lst}, then @code{#f} (not the empty list) is
|
||||
returned.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "member")
|
||||
@deffn primitive member x lst
|
||||
Return the first sublist of LST whose car is `equal?' to X
|
||||
where the sublists of LST are the non-empty lists returned
|
||||
by `(list-tail LST K)' for K less than the length of LST. If
|
||||
X does not occur in LST, then `#f' (not the empty list) is
|
||||
returned.
|
||||
Return the first sublist of @var{lst} whose car is
|
||||
@code{equal?} to @var{x} where the sublists of @var{lst} are
|
||||
the non-empty lists returned by @code{(list-tail @var{lst}
|
||||
@var{k})} for @var{k} less than the length of @var{lst}. If
|
||||
@var{x} does not occur in @var{lst}, then @code{#f} (not the
|
||||
empty list) is returned.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "delq")
|
||||
@deffn primitive delq item lst
|
||||
Return a newly-created copy of @var{lst} with elements `eq?' to @var{item} removed.
|
||||
This procedure mirrors @code{memq}:
|
||||
@code{delq} compares elements of @var{lst} against @var{item} with
|
||||
@code{eq?}.
|
||||
Return a newly-created copy of @var{lst} with elements
|
||||
@code{eq?} to @var{item} removed. This procedure mirrors
|
||||
@code{memq}: @code{delq} compares elements of @var{lst} against
|
||||
@var{item} with @code{eq?}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "delv")
|
||||
@deffn primitive delv item lst
|
||||
Return a newly-created copy of @var{lst} with elements `eqv?' to @var{item} removed.
|
||||
This procedure mirrors @code{memv}:
|
||||
@code{delv} compares elements of @var{lst} against @var{item} with
|
||||
@code{eqv?}.
|
||||
Return a newly-created copy of @var{lst} with elements
|
||||
@code{eqv?} to @var{item} removed. This procedure mirrors
|
||||
@code{memv}: @code{delv} compares elements of @var{lst} against
|
||||
@var{item} with @code{eqv?}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "delete")
|
||||
@deffn primitive delete item lst
|
||||
Return a newly-created copy of @var{lst} with elements `equal?' to @var{item} removed.
|
||||
This procedure mirrors @code{member}:
|
||||
@code{delete} compares elements of @var{lst} against @var{item} with
|
||||
@code{equal?}.
|
||||
Return a newly-created copy of @var{lst} with elements
|
||||
@code{equal?} to @var{item} removed. This procedure mirrors
|
||||
@code{member}: @code{delete} compares elements of @var{lst}
|
||||
against @var{item} with @code{equal?}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "delq!")
|
||||
|
@ -3096,20 +3105,23 @@ destructive list functions, these functions cannot modify the binding of
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "delq1!")
|
||||
@deffn primitive delq1! item lst
|
||||
Like `delq!', but only deletes the first occurrence of ITEM from LST.
|
||||
Tests for equality using `eq?'. See also `delv1!' and `delete1!'.
|
||||
Like @code{delq!}, but only deletes the first occurrence of
|
||||
@var{item} from @var{lst}. Tests for equality using
|
||||
@code{eq?}. See also @code{delv1!} and @code{delete1!}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "delv1!")
|
||||
@deffn primitive delv1! item lst
|
||||
Like `delv!', but only deletes the first occurrence of ITEM from LST.
|
||||
Tests for equality using `eqv?'. See also `delq1!' and `delete1!'.
|
||||
Like @code{delv!}, but only deletes the first occurrence of
|
||||
@var{item} from @var{lst}. Tests for equality using
|
||||
@code{eqv?}. See also @code{delq1!} and @code{delete1!}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "delete1!")
|
||||
@deffn primitive delete1! item lst
|
||||
Like `delete!', but only deletes the first occurrence of ITEM from LST.
|
||||
Tests for equality using `equal?'. See also `delq1!' and `delv1!'.
|
||||
Like @code{delete!}, but only deletes the first occurrence of
|
||||
@var{item} from @var{lst}. Tests for equality using
|
||||
@code{equal?}. See also @code{delq1!} and @code{delv1!}.
|
||||
@end deffn
|
||||
|
||||
[FIXME: is there any reason to have the `sloppy' functions available at
|
||||
|
@ -3450,7 +3462,8 @@ For more information, see the documentation for @code{make-vtable-vtable}.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "struct?")
|
||||
@deffn primitive struct? x
|
||||
Return #t iff @var{obj} is a structure object, else #f.
|
||||
Return @code{#t} iff @var{obj} is a structure object, else
|
||||
@code{#f}.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
@ -3486,7 +3499,7 @@ Return the vtable structure that describes the type of @var{struct}.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "struct-vtable?")
|
||||
@deffn primitive struct-vtable? x
|
||||
Return #t iff obj is a vtable structure.
|
||||
Return @code{#t} iff obj is a vtable structure.
|
||||
@end deffn
|
||||
|
||||
If you have a vtable structure, @code{V}, you can create an instance of
|
||||
|
@ -4543,8 +4556,8 @@ any Scheme object.
|
|||
@deffn primitive hashq-ref table obj [dflt]
|
||||
Look up @var{key} in the hash table @var{table}, and return the
|
||||
value (if any) associated with it. If @var{key} is not found,
|
||||
return @var{default} (or @code{#f} if no @var{default} argument is
|
||||
supplied). Uses `eq?' for equality testing.
|
||||
return @var{default} (or @code{#f} if no @var{default} argument
|
||||
is supplied). Uses @code{eq?} for equality testing.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
|
@ -4552,8 +4565,8 @@ supplied). Uses `eq?' for equality testing.
|
|||
@deffn primitive hashv-ref table obj [dflt]
|
||||
Look up @var{key} in the hash table @var{table}, and return the
|
||||
value (if any) associated with it. If @var{key} is not found,
|
||||
return @var{default} (or @code{#f} if no @var{default} argument is
|
||||
supplied). Uses `eqv?' for equality testing.
|
||||
return @var{default} (or @code{#f} if no @var{default} argument
|
||||
is supplied). Uses @code{eqv?} for equality testing.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
|
@ -4561,50 +4574,51 @@ supplied). Uses `eqv?' for equality testing.
|
|||
@deffn primitive hash-ref table obj [dflt]
|
||||
Look up @var{key} in the hash table @var{table}, and return the
|
||||
value (if any) associated with it. If @var{key} is not found,
|
||||
return @var{default} (or @code{#f} if no @var{default} argument is
|
||||
supplied). Uses `equal?' for equality testing.
|
||||
return @var{default} (or @code{#f} if no @var{default} argument
|
||||
is supplied). Uses @code{equal?} for equality testing.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
@c docstring begin (texi-doc-string "guile" "hashq-set!")
|
||||
@deffn primitive hashq-set! table obj val
|
||||
Find the entry in @var{table} associated with @var{key}, and store
|
||||
@var{value} there. Uses `eq?' for equality testing.
|
||||
Find the entry in @var{table} associated with @var{key}, and
|
||||
store @var{value} there. Uses @code{eq?} for equality testing.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
@c docstring begin (texi-doc-string "guile" "hashv-set!")
|
||||
@deffn primitive hashv-set! table obj val
|
||||
Find the entry in @var{table} associated with @var{key}, and store
|
||||
@var{value} there. Uses `eqv?' for equality testing.
|
||||
Find the entry in @var{table} associated with @var{key}, and
|
||||
store @var{value} there. Uses @code{eqv?} for equality testing.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
@c docstring begin (texi-doc-string "guile" "hash-set!")
|
||||
@deffn primitive hash-set! table obj val
|
||||
Find the entry in @var{table} associated with @var{key}, and store
|
||||
@var{value} there. Uses `equal?' for equality testing.
|
||||
Find the entry in @var{table} associated with @var{key}, and
|
||||
store @var{value} there. Uses @code{equal?} for equality
|
||||
testing.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
@c docstring begin (texi-doc-string "guile" "hashq-remove!")
|
||||
@deffn primitive hashq-remove! table obj
|
||||
Remove @var{key} (and any value associated with it) from @var{table}.
|
||||
Uses `eq?' for equality tests.
|
||||
Remove @var{key} (and any value associated with it) from
|
||||
@var{table}. Uses @code{eq?} for equality tests.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
@c docstring begin (texi-doc-string "guile" "hashv-remove!")
|
||||
@deffn primitive hashv-remove! table obj
|
||||
Remove @var{key} (and any value associated with it) from @var{table}.
|
||||
Uses `eqv?' for equality tests.
|
||||
Remove @var{key} (and any value associated with it) from
|
||||
@var{table}. Uses @code{eqv?} for equality tests.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME obj/key
|
||||
@c docstring begin (texi-doc-string "guile" "hash-remove!")
|
||||
@deffn primitive hash-remove! table obj
|
||||
Remove @var{key} (and any value associated with it) from @var{table}.
|
||||
Uses `equal?' for equality tests.
|
||||
Remove @var{key} (and any value associated with it) from
|
||||
@var{table}. Uses @code{equal?} for equality tests.
|
||||
@end deffn
|
||||
|
||||
The standard hash table functions may be too limited for some
|
||||
|
@ -4624,36 +4638,38 @@ explanation of how hash tables are implemented.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "hashq")
|
||||
@deffn primitive hashq key size
|
||||
Determine a hash value for KEY that is suitable for lookups in
|
||||
a hashtable of size SIZE, where eq? is used as the equality
|
||||
predicate. The function returns an integer in the range 0 to
|
||||
SIZE - 1. NOTE that `hashq' may use internal addresses.
|
||||
Thus two calls to hashq where the keys are eq? are not
|
||||
guaranteed to deliver the same value if the key object gets
|
||||
garbage collected in between. This can happen, for example
|
||||
with symbols: (hashq 'foo n) (gc) (hashq 'foo n) may produce two
|
||||
different values, since 'foo will be garbage collected.
|
||||
Determine a hash value for @var{key} that is suitable for
|
||||
lookups in a hashtable of size @var{size}, where @code{eq?} is
|
||||
used as the equality predicate. The function returns an
|
||||
integer in the range 0 to @var{size} - 1. Note that
|
||||
@code{hashq} may use internal addresses. Thus two calls to
|
||||
hashq where the keys are @code{eq?} are not guaranteed to
|
||||
deliver the same value if the key object gets garbage collected
|
||||
in between. This can happen, for example with symbols:
|
||||
@code{(hashq 'foo n) (gc) (hashq 'foo n)} may produce two
|
||||
different values, since @code{foo} will be garbage collected.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "hashv")
|
||||
@deffn primitive hashv key size
|
||||
Determine a hash value for KEY that is suitable for lookups in
|
||||
a hashtable of size SIZE, where eqv? is used as the equality
|
||||
predicate. The function returns an integer in the range 0 to
|
||||
SIZE - 1. NOTE that (hashv key) may use internal addresses.
|
||||
Thus two calls to hashv where the keys are eqv? are not
|
||||
guaranteed to deliver the same value if the key object gets
|
||||
garbage collected in between. This can happen, for example
|
||||
with symbols: (hashv 'foo n) (gc) (hashv 'foo n) may produce two
|
||||
different values, since 'foo will be garbage collected.
|
||||
Determine a hash value for @var{key} that is suitable for
|
||||
lookups in a hashtable of size @var{size}, where @code{eqv?} is
|
||||
used as the equality predicate. The function returns an
|
||||
integer in the range 0 to @var{size} - 1. Note that
|
||||
@code{(hashv key)} may use internal addresses. Thus two calls
|
||||
to hashv where the keys are @code{eqv?} are not guaranteed to
|
||||
deliver the same value if the key object gets garbage collected
|
||||
in between. This can happen, for example with symbols:
|
||||
@code{(hashv 'foo n) (gc) (hashv 'foo n)} may produce two
|
||||
different values, since @code{foo} will be garbage collected.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "hash")
|
||||
@deffn primitive hash key size
|
||||
Determine a hash value for KEY that is suitable for lookups in
|
||||
a hashtable of size SIZE, where equal? is used as the equality
|
||||
predicate. The function returns an integer in the range 0 to
|
||||
SIZE - 1.
|
||||
Determine a hash value for @var{key} that is suitable for
|
||||
lookups in a hashtable of size @var{size}, where @code{equal?}
|
||||
is used as the equality predicate. The function returns an
|
||||
integer in the range 0 to @var{size} - 1.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME hash/hasher
|
||||
|
@ -4784,27 +4800,24 @@ Otherwise the initial contents of each element is unspecified. (r5rs)
|
|||
@c docstring begin (texi-doc-string "guile" "list->vector")
|
||||
@deffn primitive vector . l
|
||||
@deffnx primitive list->vector l
|
||||
Returns a newly allocated vector whose elements contain the given
|
||||
arguments. Analogous to @samp{list}. (r5rs)
|
||||
Returns a newly allocated vector whose elements contain the
|
||||
given arguments. Analogous to @code{list}. (r5rs)
|
||||
|
||||
@format
|
||||
@t{(vector 'a 'b 'c) ==> #(a b c) }
|
||||
@end format
|
||||
@lisp
|
||||
(vector 'a 'b 'c) @result{} #(a b c)
|
||||
@end lisp
|
||||
@end deffn
|
||||
|
||||
@r5index vector->list
|
||||
@c docstring begin (texi-doc-string "guile" "vector->list")
|
||||
@deffn primitive vector->list v
|
||||
@samp{Vector->list} returns a newly allocated list of the objects contained
|
||||
in the elements of @var{vector}. (r5rs)
|
||||
@samp{Vector->list} returns a newly allocated list of the
|
||||
objects contained in the elements of @var{vector}. (r5rs)
|
||||
|
||||
@format
|
||||
@t{(vector->list '#(dah dah didah))
|
||||
=> (dah dah didah)
|
||||
list->vector '(dididit dah))
|
||||
=> #(dididit dah)
|
||||
}
|
||||
@end format
|
||||
@lisp
|
||||
(vector->list '#(dah dah didah)) @result{} (dah dah didah)
|
||||
(list->vector '(dididit dah)) @result{} #(dididit dah)
|
||||
@end lisp
|
||||
@end deffn
|
||||
|
||||
@r5index vector-fill!
|
||||
|
@ -4812,13 +4825,14 @@ list->vector '(dididit dah))
|
|||
@c docstring begin (texi-doc-string "guile" "vector-fill!")
|
||||
@deffn primitive vector-fill! v fill_x
|
||||
Stores @var{fill} in every element of @var{vector}.
|
||||
The value returned by @samp{vector-fill!} is unspecified. (r5rs)
|
||||
The value returned by @code{vector-fill!} is unspecified. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index vector?
|
||||
@c docstring begin (texi-doc-string "guile" "vector?")
|
||||
@deffn primitive vector? obj
|
||||
Returns @t{#t} if @var{obj} is a vector, otherwise returns @t{#f}. (r5rs)
|
||||
Returns @code{#t} if @var{obj} is a vector, otherwise returns
|
||||
@code{#f}. (r5rs)
|
||||
@end deffn
|
||||
|
||||
@r5index vector-length
|
||||
|
|
|
@ -132,9 +132,10 @@ dynamically typed by the user.
|
|||
|
||||
@c docstring begin (texi-doc-string "guile" "eval-string")
|
||||
@deffn primitive eval-string string
|
||||
Evaluate @var{string} as the text representation of a Scheme form
|
||||
or forms, and return whatever value they produce.
|
||||
Evaluation takes place in (interaction-environment).
|
||||
Evaluate @var{string} as the text representation of a Scheme
|
||||
form or forms, and return whatever value they produce.
|
||||
Evaluation takes place in the environment returned by the
|
||||
procedure @code{interaction-environment}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "apply:nconc2last")
|
||||
|
@ -191,31 +192,34 @@ this section.
|
|||
@c ARGFIXME file/filename
|
||||
@c docstring begin (texi-doc-string "guile" "primitive-load")
|
||||
@deffn primitive primitive-load filename
|
||||
Load @var{file} and evaluate its contents in the top-level environment.
|
||||
The load paths are not searched; @var{file} must either be a full
|
||||
pathname or be a pathname relative to the current directory. If the
|
||||
variable @code{%load-hook} is defined, it should be bound to a procedure
|
||||
that will be called before any code is loaded. See documentation for
|
||||
@code{%load-hook} later in this section.
|
||||
Load the file named @var{filename} and evaluate its contents in
|
||||
the top-level environment. The load paths are not searched;
|
||||
@var{filename} must either be a full pathname or be a pathname
|
||||
relative to the current directory. If the variable
|
||||
@code{%load-hook} is defined, it should be bound to a procedure
|
||||
that will be called before any code is loaded. See the
|
||||
documentation for @code{%load-hook} later in this section.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME file/filename
|
||||
@c docstring begin (texi-doc-string "guile" "primitive-load-path")
|
||||
@deffn primitive primitive-load-path filename
|
||||
Search @var{%load-path} for @var{file} and load it into the top-level
|
||||
environment. If @var{file} is a relative pathname and is not found in
|
||||
the list of search paths, an error is signalled.
|
||||
Search @var{%load-path} for the file named @var{filename} and
|
||||
load it into the top-level environment. If @var{filename} is a
|
||||
relative pathname and is not found in the list of search paths,
|
||||
an error is signalled.
|
||||
@end deffn
|
||||
|
||||
@c ARGFIXME file/filename
|
||||
@c docstring begin (texi-doc-string "guile" "%search-load-path")
|
||||
@deffn primitive %search-load-path filename
|
||||
Search @var{%load-path} for @var{file}, which must be readable by the
|
||||
current user. If @var{file} is found in the list of paths to search or
|
||||
is an absolute pathname, return its full pathname. Otherwise, return
|
||||
@code{#f}. Filenames may have any of the optional extensions in the
|
||||
@code{%load-extensions} list; @code{%search-load-path} will try each
|
||||
extension automatically.
|
||||
Search @var{%load-path} for the file named @var{filename},
|
||||
which must be readable by the current user. If @var{filename}
|
||||
is found in the list of paths to search or is an absolute
|
||||
pathname, return its full pathname. Otherwise, return
|
||||
@code{#f}. Filenames may have any of the optional extensions
|
||||
in the @code{%load-extensions} list; @code{%search-load-path}
|
||||
will try each extension automatically.
|
||||
@end deffn
|
||||
|
||||
@defvar %load-hook
|
||||
|
@ -255,7 +259,7 @@ list @code{("" ".scm")}.
|
|||
|
||||
@c ARGFIXME x/obj
|
||||
@c docstring begin (texi-doc-string "guile" "promise?")
|
||||
@deffn primitive promise? x
|
||||
@deffn primitive promise? obj
|
||||
Return true if @var{obj} is a promise, i.e. a delayed computation
|
||||
(@pxref{Delayed evaluation,,,r4rs.info,The Revised^4 Report on Scheme}).
|
||||
@end deffn
|
||||
|
@ -263,8 +267,9 @@ Return true if @var{obj} is a promise, i.e. a delayed computation
|
|||
@r5index force
|
||||
@c docstring begin (texi-doc-string "guile" "force")
|
||||
@deffn primitive force x
|
||||
If the promise X has not been computed yet, compute and return
|
||||
X, otherwise just return the previously computed value.
|
||||
If the promise @var{x} has not been computed yet, compute and
|
||||
return @var{x}, otherwise just return the previously computed
|
||||
value.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
|
|
@ -51,7 +51,8 @@ Returns @code{#t} if @var{x} is an output port, otherwise returns
|
|||
@c docstring begin (texi-doc-string "guile" "port?")
|
||||
@deffn primitive port? x
|
||||
Returns a boolean indicating whether @var{x} is a port.
|
||||
Equivalent to @code{(or (input-port? X) (output-port? X))}.
|
||||
Equivalent to @code{(or (input-port? @var{x}) (output-port?
|
||||
@var{x}))}.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
@ -135,13 +136,13 @@ characters) and returns the content as a single string.
|
|||
@c docstring begin (texi-doc-string "guile" "port-column")
|
||||
@c docstring begin (texi-doc-string "guile" "port-line")
|
||||
@deffn primitive port-column port
|
||||
@deffnx primitive port-line [input-port]
|
||||
Return the current column number or line number of @var{input-port},
|
||||
@deffnx primitive port-line port
|
||||
Return the current column number or line number of @var{port},
|
||||
using the current input port if none is specified. If the number is
|
||||
unknown, the result is #f. Otherwise, the result is a 0-origin integer
|
||||
- i.e. the first character of the first line is line 0, column 0.
|
||||
(However, when you display a file position, for example in an error
|
||||
message, we recommand you add 1 to get 1-origin integers. This is
|
||||
message, we recommend you add 1 to get 1-origin integers. This is
|
||||
because lines and column numbers traditionally start with 1, and that is
|
||||
what non-programmers will find most natural.)
|
||||
@end deffn
|
||||
|
@ -216,8 +217,9 @@ included print state @var{pstate}.
|
|||
@c docstring begin (texi-doc-string "guile" "print-options-interface")
|
||||
@deffn primitive print-options-interface [setting]
|
||||
Option interface for the print options. Instead of using
|
||||
this procedure directly, use the procedures @code{print-enable},
|
||||
@code{print-disable}, @code{print-set!} and @var{print-options}.
|
||||
this procedure directly, use the procedures
|
||||
@code{print-enable}, @code{print-disable}, @code{print-set!}
|
||||
and @code{print-options}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "simple-format")
|
||||
|
@ -460,19 +462,19 @@ internals.
|
|||
@c docstring begin (texi-doc-string "guile" "%read-delimited!")
|
||||
@deffn primitive %read-delimited! delims str gobble [port [start [end]]]
|
||||
Read characters from @var{port} into @var{str} until one of the
|
||||
characters in the @var{delims} string is encountered. If @var{gobble}
|
||||
is true, discard the delimiter character; otherwise, leave it
|
||||
in the input stream for the next read.
|
||||
If @var{port} is not specified, use the value of
|
||||
@code{(current-input-port)}. If @var{start} or @var{end} are specified,
|
||||
store data only into the substring of @var{str} bounded by @var{start}
|
||||
and @var{end} (which default to the beginning and end of the string,
|
||||
respectively).
|
||||
|
||||
Return a pair consisting of the delimiter that terminated the string and
|
||||
the number of characters read. If reading stopped at the end of file,
|
||||
the delimiter returned is the @var{eof-object}; if the string was filled
|
||||
without encountering a delimiter, this value is @var{#f}.
|
||||
characters in the @var{delims} string is encountered. If
|
||||
@var{gobble} is true, discard the delimiter character;
|
||||
otherwise, leave it in the input stream for the next read. If
|
||||
@var{port} is not specified, use the value of
|
||||
@code{(current-input-port)}. If @var{start} or @var{end} are
|
||||
specified, store data only into the substring of @var{str}
|
||||
bounded by @var{start} and @var{end} (which default to the
|
||||
beginning and end of the string, respectively).
|
||||
Return a pair consisting of the delimiter that terminated the
|
||||
string and the number of characters read. If reading stopped
|
||||
at the end of file, the delimiter returned is the
|
||||
@var{eof-object}; if the string was filled without encountering
|
||||
a delimiter, this value is @code{#f}.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "%read-line")
|
||||
|
|
|
@ -104,9 +104,9 @@ regular hash tables. (@pxref{Hash Tables})
|
|||
@deffn primitive weak-key-hash-table? x
|
||||
@deffnx primitive weak-value-hash-table? obj
|
||||
@deffnx primitive doubly-weak-hash-table? obj
|
||||
Return @var{#t} if @var{obj} is the specified weak hash table. Note
|
||||
that a doubly weak hash table is neither a weak key nor a weak value
|
||||
hash table.
|
||||
Return @code{#t} if @var{obj} is the specified weak hash
|
||||
table. Note that a doubly weak hash table is neither a weak key
|
||||
nor a weak value hash table.
|
||||
@end deffn
|
||||
|
||||
@c docstring begin (texi-doc-string "guile" "make-weak-value-hash-table")
|
||||
|
@ -154,8 +154,8 @@ its arguments while @code{list->weak-vector} uses its only argument
|
|||
@c ARGFIXME x/obj
|
||||
@c docstring begin (texi-doc-string "guile" "weak-vector?")
|
||||
@deffn primitive weak-vector? x
|
||||
Return @var{#t} if @var{obj} is a weak vector. Note that all weak
|
||||
hashes are also weak vectors.
|
||||
Return @code{#t} if @var{obj} is a weak vector. Note that all
|
||||
weak hashes are also weak vectors.
|
||||
@end deffn
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue