klisp

an open source interpreter for the Kernel Programming Language.
git clone http://git.hanabi.in/repos/klisp.git
Log | Files | Refs | README

commit 91d54dab369bcbcc1905c9be04f7ec41b05edac4
parent feebadac091c96121f6ac2551fe09a22fb923771
Author: Andres Navarro <canavarro82@gmail.com>
Date:   Thu, 15 Dec 2011 06:20:52 -0300

Added a section to the manual with the interpreter description, options, exit status, environment variables, etc. Some small fixes in the documentation.

Diffstat:
Mdoc/html/Alphabetical-Index.html | 623++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mdoc/html/Booleans.html | 20++++++++++----------
Mdoc/html/Characters.html | 44++++++++++++++++++++++----------------------
Mdoc/html/Combiners.html | 22+++++++++++-----------
Adoc/html/Command-Line-Options.html | 1+
Mdoc/html/Continuations.html | 26+++++++++++++-------------
Mdoc/html/Control.html | 14+++++++-------
Mdoc/html/Encapsulations.html | 6+++---
Mdoc/html/Environments.html | 42+++++++++++++++++++++---------------------
Mdoc/html/Equivalence.html | 8++++----
Adoc/html/Interpreter-Exit-Status.html | 1+
Adoc/html/Interpreter.html | 177+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdoc/html/Introduction.html | 4++--
Mdoc/html/Keyed-Variables.html | 16++++++++--------
Mdoc/html/Numbers.html | 126++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mdoc/html/Pairs-and-lists.html | 116++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mdoc/html/Ports.html | 86++++++++++++++++++++++++++++++++++++++++----------------------------------------
Mdoc/html/Promises.html | 12++++++------
Mdoc/html/Strings.html | 50+++++++++++++++++++++++++-------------------------
Mdoc/html/Symbols.html | 10+++++-----
Mdoc/html/index.html | 15++++++++-------
Mdoc/klisp.1 | 14+++++++++++---
Mdoc/klisp.info | 344+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Mdoc/src/Makefile | 2+-
Mdoc/src/booleans.texi | 2+-
Mdoc/src/continuations.texi | 2+-
Mdoc/src/environments.texi | 2+-
Adoc/src/interpreter.texi | 154+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdoc/src/intro.texi | 2+-
Mdoc/src/klisp.texi | 2++
Mdoc/src/numbers.texi | 2+-
Mdoc/src/ports.texi | 52++++++++++++++++++++++++++--------------------------
32 files changed, 1266 insertions(+), 731 deletions(-)

diff --git a/doc/html/Alphabetical-Index.html b/doc/html/Alphabetical-Index.html @@ -35,279 +35,305 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <h2 class="unnumbered">Index</h2> <ul class="index-fn" compact> -<li><a href="Booleans.html#index-g_t_0024and_003f-17"><code>$and?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> -<li><a href="Environments.html#index-g_t_0024binds_003f-101"><code>$binds?</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Control.html#index-g_t_0024cond-31"><code>$cond</code></a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Environments.html#index-g_t_0024define_0021-99"><code>$define!</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Control.html#index-g_t_0024if-29"><code>$if</code></a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Environments.html#index-g_t_0024import_0021-113"><code>$import!</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Combiners.html#index-g_t_0024lambda-122"><code>$lambda</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Promises.html#index-g_t_0024lazy-143"><code>$lazy</code></a>: <a href="Promises.html#Promises">Promises</a></li> -<li><a href="Environments.html#index-g_t_0024let-100"><code>$let</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-g_t_0024let_002a-104"><code>$let*</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-g_t_0024let_002dredirect-107"><code>$let-redirect</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-g_t_0024let_002dsafe-108"><code>$let-safe</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-g_t_0024letrec-105"><code>$letrec</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-g_t_0024letrec_002a-106"><code>$letrec*</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Booleans.html#index-g_t_0024or_003f-18"><code>$or?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> -<li><a href="Environments.html#index-g_t_0024provide_0021-112"><code>$provide!</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-g_t_0024remote_002deval-109"><code>$remote-eval</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Control.html#index-g_t_0024sequence-30"><code>$sequence</code></a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Environments.html#index-g_t_0024set_0021-111"><code>$set!</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Combiners.html#index-g_t_0024vau-119"><code>$vau</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Ports.html#index-g_t_0028-263"><code>(</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Numbers.html#index-g_t_0028-179"><code>(</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Continuations.html#index-g_t_0028-135"><code>(</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Environments.html#index-g_t_0028-110"><code>(</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Numbers.html#index-g_t_002a-166"><code>*</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_002b-165"><code>+</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_002d-167"><code>-</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_002f-193"><code>/</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_003c_003d_003f-162"><code>&lt;=?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_003c_003f-161"><code>&lt;?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_003d_003f-160"><code>=?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_003e_003d_003f-164"><code>&gt;=?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-g_t_003e_003f-163"><code>&gt;?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-acos-208"><code>acos</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Booleans.html#index-and_003f-15"><code>and?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> -<li><a href="Pairs-and-lists.html#index-append-81"><code>append</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-append_0021-89"><code>append!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Booleans.html#index-g_t_0024and_003f-18"><code>$and?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> +<li><a href="Environments.html#index-g_t_0024bindings_002d_003eenvironment-111"><code>$bindings-&gt;environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-g_t_0024binds_003f-102"><code>$binds?</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Control.html#index-g_t_0024cond-32"><code>$cond</code></a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Environments.html#index-g_t_0024define_0021-100"><code>$define!</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Control.html#index-g_t_0024if-30"><code>$if</code></a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Environments.html#index-g_t_0024import_0021-114"><code>$import!</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Combiners.html#index-g_t_0024lambda-123"><code>$lambda</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Promises.html#index-g_t_0024lazy-144"><code>$lazy</code></a>: <a href="Promises.html#Promises">Promises</a></li> +<li><a href="Environments.html#index-g_t_0024let-101"><code>$let</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-g_t_0024let_002a-105"><code>$let*</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-g_t_0024let_002dredirect-108"><code>$let-redirect</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-g_t_0024let_002dsafe-109"><code>$let-safe</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Continuations.html#index-g_t_0024let_002fcc-136"><code>$let/cc</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Environments.html#index-g_t_0024letrec-106"><code>$letrec</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-g_t_0024letrec_002a-107"><code>$letrec*</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Booleans.html#index-g_t_0024or_003f-19"><code>$or?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> +<li><a href="Environments.html#index-g_t_0024provide_0021-113"><code>$provide!</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-g_t_0024remote_002deval-110"><code>$remote-eval</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Control.html#index-g_t_0024sequence-31"><code>$sequence</code></a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Environments.html#index-g_t_0024set_0021-112"><code>$set!</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Combiners.html#index-g_t_0024vau-120"><code>$vau</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Numbers.html#index-g_t_002a-167"><code>*</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_002b-166"><code>+</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_002d-168"><code>-</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_002f-194"><code>/</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_003c_003d_003f-163"><code>&lt;=?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_003c_003f-162"><code>&lt;?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_003d_003f-161"><code>=?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_003e_003d_003f-165"><code>&gt;=?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-g_t_003e_003f-164"><code>&gt;?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-abs-180"><code>abs</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-acos-209"><code>acos</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Booleans.html#index-and_003f-16"><code>and?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> +<li><a href="Pairs-and-lists.html#index-append-82"><code>append</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-append_0021-90"><code>append!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="A-Sample-Applicative-Description.html#index-applicative-descriptions-8">applicative descriptions</a>: <a href="A-Sample-Applicative-Description.html#A-Sample-Applicative-Description">A Sample Applicative Description</a></li> -<li><a href="Combiners.html#index-applicative_003f-118"><code>applicative?</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Combiners.html#index-applicatives-115">applicatives</a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Combiners.html#index-apply-123"><code>apply</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Continuations.html#index-apply_002dcontinuation-134"><code>apply-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Numbers.html#index-asin-207"><code>asin</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Pairs-and-lists.html#index-assoc-84"><code>assoc</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-assq-91"><code>assq</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-atan-209"><code>atan</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Ports.html#index-binary_002dport_003f-262"><code>binary-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Booleans.html#index-boolean_003f-13"><code>boolean?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> -<li><a href="Booleans.html#index-booleans-12">booleans</a>: <a href="Booleans.html#Booleans">Booleans</a></li> -<li><a href="Pairs-and-lists.html#index-caaaar-59"><code>caaaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caaadr-60"><code>caaadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caaar-51"><code>caaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caadar-61"><code>caadar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caaddr-62"><code>caaddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caadr-52"><code>caadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caar-47"><code>caar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cadaar-63"><code>cadaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cadadr-64"><code>cadadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cadar-53"><code>cadar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caddar-65"><code>caddar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cadddr-66"><code>cadddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-caddr-54"><code>caddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cadr-48"><code>cadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Ports.html#index-call_002dwith_002dinput_002dfile-280"><code>call-with-input-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Ports.html#index-call_002dwith_002doutput_002dfile-281"><code>call-with-output-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Continuations.html#index-call_002fcc-128"><code>call/cc</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Pairs-and-lists.html#index-car-45"><code>car</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdaaar-67"><code>cdaaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdaadr-68"><code>cdaadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdaar-55"><code>cdaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdadar-69"><code>cdadar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdaddr-70"><code>cdaddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdadr-56"><code>cdadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdar-49"><code>cdar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cddaar-71"><code>cddaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cddadr-72"><code>cddadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cddar-57"><code>cddar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdddar-73"><code>cdddar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cddddr-74"><code>cddddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdddr-58"><code>cdddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cddr-50"><code>cddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-cdr-46"><code>cdr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-ceiling-197"><code>ceiling</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Characters.html#index-char_002d_003einteger-255"><code>char-&gt;integer</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dalphabetic_003f-248"><code>char-alphabetic?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dci_003c_003d_003f-245"><code>char-ci&lt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dci_003c_003f-244"><code>char-ci&lt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dci_003d_003f-243"><code>char-ci=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dci_003e_003d_003f-247"><code>char-ci&gt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dci_003e_003f-246"><code>char-ci&gt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002ddowncase-254"><code>char-downcase</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dlower_002dcase_003f-252"><code>char-lower-case?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dnumeric_003f-249"><code>char-numeric?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dupcase-253"><code>char-upcase</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dupper_002dcase_003f-251"><code>char-upper-case?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_002dwhitespace_003f-250"><code>char-whitespace?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_003c_003d_003f-240"><code>char&lt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_003c_003f-239"><code>char&lt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_003d_003f-238"><code>char=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_003e_003d_003f-242"><code>char&gt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_003e_003f-241"><code>char&gt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-char_003f-237"><code>char?</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Characters.html#index-characters-236">characters</a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Combiners.html#index-combiner_003f-125"><code>combiner?</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Combiners.html#index-combiners-114">combiners</a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Pairs-and-lists.html#index-cons-39"><code>cons</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Continuations.html#index-continuation_002d_003eapplicative-131"><code>continuation-&gt;applicative</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Continuations.html#index-continuation_003f-127"><code>continuation?</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Continuations.html#index-continuations-126">continuations</a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Control.html#index-control-26">control</a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Pairs-and-lists.html#index-copy_002des-90"><code>copy-es</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-copy_002des_002dimmutable_0021-42"><code>copy-es-immutable!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-cos-205"><code>cos</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Pairs-and-lists.html#index-countable_002dlist_003f-87"><code>countable-list?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-denominator-195"><code>denominator</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Combiners.html#index-applicative_003f-119"><code>applicative?</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Combiners.html#index-applicatives-116">applicatives</a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Combiners.html#index-apply-124"><code>apply</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Continuations.html#index-apply_002dcontinuation-135"><code>apply-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Numbers.html#index-asin-208"><code>asin</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Pairs-and-lists.html#index-assoc-85"><code>assoc</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-assq-92"><code>assq</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-atan-210"><code>atan</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-binary_002dport_003f-263"><code>binary-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Booleans.html#index-boolean_003f-14"><code>boolean?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> +<li><a href="Booleans.html#index-booleans-13">booleans</a>: <a href="Booleans.html#Booleans">Booleans</a></li> +<li><a href="Pairs-and-lists.html#index-caaaar-60"><code>caaaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caaadr-61"><code>caaadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caaar-52"><code>caaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caadar-62"><code>caadar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caaddr-63"><code>caaddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caadr-53"><code>caadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caar-48"><code>caar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cadaar-64"><code>cadaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cadadr-65"><code>cadadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cadar-54"><code>cadar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caddar-66"><code>caddar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cadddr-67"><code>cadddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-caddr-55"><code>caddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cadr-49"><code>cadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Ports.html#index-call_002dwith_002dinput_002dfile-281"><code>call-with-input-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-call_002dwith_002doutput_002dfile-282"><code>call-with-output-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Continuations.html#index-call_002fcc-129"><code>call/cc</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Pairs-and-lists.html#index-car-46"><code>car</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdaaar-68"><code>cdaaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdaadr-69"><code>cdaadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdaar-56"><code>cdaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdadar-70"><code>cdadar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdaddr-71"><code>cdaddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdadr-57"><code>cdadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdar-50"><code>cdar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cddaar-72"><code>cddaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cddadr-73"><code>cddadr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cddar-58"><code>cddar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdddar-74"><code>cdddar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cddddr-75"><code>cddddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdddr-59"><code>cdddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cddr-51"><code>cddr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-cdr-47"><code>cdr</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-ceiling-198"><code>ceiling</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Characters.html#index-char_002d_003einteger-256"><code>char-&gt;integer</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dalphabetic_003f-249"><code>char-alphabetic?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dci_003c_003d_003f-246"><code>char-ci&lt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dci_003c_003f-245"><code>char-ci&lt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dci_003d_003f-244"><code>char-ci=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dci_003e_003d_003f-248"><code>char-ci&gt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dci_003e_003f-247"><code>char-ci&gt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002ddowncase-255"><code>char-downcase</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dlower_002dcase_003f-253"><code>char-lower-case?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dnumeric_003f-250"><code>char-numeric?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Ports.html#index-char_002dready_003f-288"><code>char-ready?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Characters.html#index-char_002dupcase-254"><code>char-upcase</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dupper_002dcase_003f-252"><code>char-upper-case?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_002dwhitespace_003f-251"><code>char-whitespace?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_003c_003d_003f-241"><code>char&lt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_003c_003f-240"><code>char&lt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_003d_003f-239"><code>char=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_003e_003d_003f-243"><code>char&gt;=?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_003e_003f-242"><code>char&gt;?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-char_003f-238"><code>char?</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Characters.html#index-characters-237">characters</a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Ports.html#index-close_002dinput_002dfile-274"><code>close-input-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-close_002dinput_002dport-276"><code>close-input-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-close_002doutput_002dfile-275"><code>close-output-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-close_002doutput_002dport-277"><code>close-output-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-close_002dport-278"><code>close-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Combiners.html#index-combiner_003f-126"><code>combiner?</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Combiners.html#index-combiners-115">combiners</a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Pairs-and-lists.html#index-cons-40"><code>cons</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Continuations.html#index-continuation_002d_003eapplicative-132"><code>continuation-&gt;applicative</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Continuations.html#index-continuation_003f-128"><code>continuation?</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Continuations.html#index-continuations-127">continuations</a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Control.html#index-control-27">control</a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Pairs-and-lists.html#index-copy_002des-91"><code>copy-es</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-copy_002des_002dimmutable_0021-43"><code>copy-es-immutable!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-cos-206"><code>cos</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Pairs-and-lists.html#index-countable_002dlist_003f-88"><code>countable-list?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Ports.html#index-delete_002dfile-298"><code>delete-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-denominator-196"><code>denominator</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Format-of-Descriptions.html#index-description-format-7">description format</a>: <a href="Format-of-Descriptions.html#Format-of-Descriptions">Format of Descriptions</a></li> -<li><a href="Numbers.html#index-div-169"><code>div</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-div_002dand_002dmod-171"><code>div-and-mod</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-div0-172"><code>div0</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-div0_002dand_002dmod0-174"><code>div0-and-mod0</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-display-291"><code>display</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-div-170"><code>div</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-div_002dand_002dmod-172"><code>div-and-mod</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-div0-173"><code>div0</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-div0_002dand_002dmod0-175"><code>div0-and-mod0</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Evaluation-Notation.html#index-documentation-notation-4">documentation notation</a>: <a href="Evaluation-Notation.html#Evaluation-Notation">Evaluation Notation</a></li> -<li><a href="Pairs-and-lists.html#index-empty-list-35">empty list</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Encapsulations.html#index-encapsulations-138">encapsulations</a>: <a href="Encapsulations.html#Encapsulations">Encapsulations</a></li> -<li><a href="Pairs-and-lists.html#index-encycle_0021-77"><code>encycle!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Environments.html#index-environment_003f-95"><code>environment?</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-environments-93">environments</a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Ports.html#index-eof_002dobject_003f-284"><code>eof-object?</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Equivalence.html#index-eq_003f-20"><code>eq?</code></a>: <a href="Equivalence.html#Equivalence">Equivalence</a></li> -<li><a href="Equivalence.html#index-equal_003f-21"><code>equal?</code></a>: <a href="Equivalence.html#Equivalence">Equivalence</a></li> -<li><a href="Equivalence.html#index-equivalence-19">equivalence</a>: <a href="Equivalence.html#Equivalence">Equivalence</a></li> +<li><a href="Pairs-and-lists.html#index-empty-list-36">empty list</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Encapsulations.html#index-encapsulations-139">encapsulations</a>: <a href="Encapsulations.html#Encapsulations">Encapsulations</a></li> +<li><a href="Pairs-and-lists.html#index-encycle_0021-78"><code>encycle!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Environments.html#index-environment_003f-96"><code>environment?</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-environments-94">environments</a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Ports.html#index-eof_002dobject_003f-285"><code>eof-object?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Equivalence.html#index-eq_003f-21"><code>eq?</code></a>: <a href="Equivalence.html#Equivalence">Equivalence</a></li> +<li><a href="Equivalence.html#index-equal_003f-22"><code>equal?</code></a>: <a href="Equivalence.html#Equivalence">Equivalence</a></li> +<li><a href="Equivalence.html#index-equivalence-20">equivalence</a>: <a href="Equivalence.html#Equivalence">Equivalence</a></li> <li><a href="Error-Messages.html#index-error-message-notation-6">error message notation</a>: <a href="Error-Messages.html#Error-Messages">Error Messages</a></li> -<li><a href="Continuations.html#index-error_002dcontinuation-133"><code>error-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Environments.html#index-eval-97"><code>eval</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Continuations.html#index-error_002dcontinuation-134"><code>error-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Environments.html#index-eval-98"><code>eval</code></a>: <a href="Environments.html#Environments">Environments</a></li> <li><a href="Evaluation-Notation.html#index-evaluation-notation-3">evaluation notation</a>: <a href="Evaluation-Notation.html#Evaluation-Notation">Evaluation Notation</a></li> -<li><a href="Numbers.html#index-even_003f-178"><code>even?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-exact_003f-156"><code>exact?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Continuations.html#index-exit-137"><code>exit</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Numbers.html#index-exp-202"><code>exp</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-expt-211"><code>expt</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Continuations.html#index-extend_002dcontinuation-129"><code>extend-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Pairs-and-lists.html#index-filter-83"><code>filter</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-finite_002dlist_003f-86"><code>finite-list?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-finite_003f-155"><code>finite?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-floor-196"><code>floor</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-even_003f-179"><code>even?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-exact_003f-157"><code>exact?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Continuations.html#index-exit-138"><code>exit</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Numbers.html#index-exp-203"><code>exp</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-expt-212"><code>expt</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Continuations.html#index-extend_002dcontinuation-130"><code>extend-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Ports.html#index-file_002dexists_003f-297"><code>file-exists?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Pairs-and-lists.html#index-filter-84"><code>filter</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-finite_002dlist_003f-87"><code>finite-list?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-finite_003f-156"><code>finite?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-floor-197"><code>floor</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-flush_002doutput_002dport-296"><code>flush-output-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Some-Terms.html#index-fonts-2">fonts</a>: <a href="Some-Terms.html#Some-Terms">Some Terms</a></li> <li><a href="A-Sample-Applicative-Description.html#index-foo-11"><code>foo</code></a>: <a href="A-Sample-Applicative-Description.html#A-Sample-Applicative-Description">A Sample Applicative Description</a></li> -<li><a href="Control.html#index-for_002deach-32"><code>for-each</code></a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Promises.html#index-force-142"><code>force</code></a>: <a href="Promises.html#Promises">Promises</a></li> -<li><a href="Numbers.html#index-gcd-183"><code>gcd</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Environments.html#index-get_002dcurrent_002denvironment-102"><code>get-current-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Pairs-and-lists.html#index-get_002dlist_002dmetrics-75"><code>get-list-metrics</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Ports.html#index-get_002dmodule-283"><code>get-module</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Numbers.html#index-get_002dreal_002dexact_002dbounds-185"><code>get-real-exact-bounds</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-get_002dreal_002dexact_002dprimary-187"><code>get-real-exact-primary</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-get_002dreal_002dinternal_002dbounds-184"><code>get-real-internal-bounds</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-get_002dreal_002dinternal_002dprimary-186"><code>get-real-internal-primary</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-get_002dstring_002darithmetic-192"><code>get-string-arithmetic</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Continuations.html#index-guard_002dcontinuation-130"><code>guard-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Continuations.html#index-guard_002ddynamic_002dextent-136"><code>guard-dynamic-extent</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Environments.html#index-ignore-94">ignore</a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Environments.html#index-ignore_003f-96"><code>ignore?</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Control.html#index-inert-27">inert</a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Control.html#index-inert_003f-28"><code>inert?</code></a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Numbers.html#index-inexact_003f-157"><code>inexact?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Ports.html#index-input_002dport_003f-259"><code>input-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Characters.html#index-integer_002d_003echar-256"><code>integer-&gt;char</code></a>: <a href="Characters.html#Characters">Characters</a></li> -<li><a href="Numbers.html#index-integer_003f-152"><code>integer?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Control.html#index-for_002deach-33"><code>for-each</code></a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Promises.html#index-force-143"><code>force</code></a>: <a href="Promises.html#Promises">Promises</a></li> +<li><a href="Numbers.html#index-gcd-184"><code>gcd</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Environments.html#index-get_002dcurrent_002denvironment-103"><code>get-current-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Ports.html#index-get_002dcurrent_002derror_002dport-269"><code>get-current-error-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-get_002dcurrent_002dinput_002dport-267"><code>get-current-input-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-get_002dcurrent_002doutput_002dport-268"><code>get-current-output-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Pairs-and-lists.html#index-get_002dlist_002dmetrics-76"><code>get-list-metrics</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Ports.html#index-get_002dmodule-284"><code>get-module</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-get_002dreal_002dexact_002dbounds-186"><code>get-real-exact-bounds</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-get_002dreal_002dexact_002dprimary-188"><code>get-real-exact-primary</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-get_002dreal_002dinternal_002dbounds-185"><code>get-real-internal-bounds</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-get_002dreal_002dinternal_002dprimary-187"><code>get-real-internal-primary</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-get_002dstring_002darithmetic-193"><code>get-string-arithmetic</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Continuations.html#index-guard_002dcontinuation-131"><code>guard-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Continuations.html#index-guard_002ddynamic_002dextent-137"><code>guard-dynamic-extent</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Environments.html#index-ignore-95">ignore</a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Environments.html#index-ignore_003f-97"><code>ignore?</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Control.html#index-inert-28">inert</a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Control.html#index-inert_003f-29"><code>inert?</code></a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Numbers.html#index-inexact_003f-158"><code>inexact?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-input_002dport_003f-260"><code>input-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Characters.html#index-integer_002d_003echar-257"><code>integer-&gt;char</code></a>: <a href="Characters.html#Characters">Characters</a></li> +<li><a href="Numbers.html#index-integer_003f-153"><code>integer?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Interpreter.html#index-interpreter-12">interpreter</a>: <a href="Interpreter.html#Interpreter">Interpreter</a></li> <li><a href="Kernel-History.html#index-Kernel-history-1">Kernel history</a>: <a href="Kernel-History.html#Kernel-History">Kernel History</a></li> -<li><a href="Keyed-Variables.html#index-keyed-dynamic-variables-146">keyed dynamic variables</a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> -<li><a href="Keyed-Variables.html#index-keyed-static-variables-148">keyed static variables</a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> -<li><a href="Keyed-Variables.html#index-keyed-variables-145">keyed variables</a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> -<li><a href="Numbers.html#index-lcm-182"><code>lcm</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Pairs-and-lists.html#index-length-79"><code>length</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-list-43"><code>list</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-list_002a-44"><code>list*</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Strings.html#index-list_002d_003estring-235"><code>list-&gt;string</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Pairs-and-lists.html#index-list_002dneighbors-82"><code>list-neighbors</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-list_002dref-80"><code>list-ref</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-list_002dtail-76"><code>list-tail</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-lists-36">lists</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Ports.html#index-load-282"><code>load</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Numbers.html#index-log-203"><code>log</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Encapsulations.html#index-make_002dencapsulation_002dtype-139"><code>make-encapsulation-type</code></a>: <a href="Encapsulations.html#Encapsulations">Encapsulations</a></li> -<li><a href="Environments.html#index-make_002denvironment-98"><code>make-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Numbers.html#index-make_002dinexact-188"><code>make-inexact</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Environments.html#index-make_002dkernel_002dstandard_002denvironment-103"><code>make-kernel-standard-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Keyed-Variables.html#index-make_002dkeyed_002ddynamic_002dvariable-147"><code>make-keyed-dynamic-variable</code></a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> -<li><a href="Keyed-Variables.html#index-make_002dkeyed_002dstatic_002dvariable-149"><code>make-keyed-static-variable</code></a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> -<li><a href="Strings.html#index-make_002dstring-224"><code>make-string</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Combiners.html#index-map-124"><code>map</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Pairs-and-lists.html#index-map-78"><code>map</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-max-180"><code>max</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Pairs-and-lists.html#index-member_003f-85"><code>member?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Promises.html#index-memoize-144"><code>memoize</code></a>: <a href="Promises.html#Promises">Promises</a></li> -<li><a href="Pairs-and-lists.html#index-memq_003f-92"><code>memq?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-min-181"><code>min</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-mod-170"><code>mod</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-mod0-173"><code>mod0</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-negative_003f-176"><code>negative?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Pairs-and-lists.html#index-nil-34">nil</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Booleans.html#index-not_003f-14"><code>not?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> -<li><a href="Pairs-and-lists.html#index-null_003f-38"><code>null?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-number_003f-151"><code>number?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-numbers-150">numbers</a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-numerator-194"><code>numerator</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Keyed-Variables.html#index-keyed-dynamic-variables-147">keyed dynamic variables</a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> +<li><a href="Keyed-Variables.html#index-keyed-static-variables-149">keyed static variables</a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> +<li><a href="Keyed-Variables.html#index-keyed-variables-146">keyed variables</a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> +<li><a href="Numbers.html#index-lcm-183"><code>lcm</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Pairs-and-lists.html#index-length-80"><code>length</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-list-44"><code>list</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-list_002a-45"><code>list*</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Strings.html#index-list_002d_003estring-236"><code>list-&gt;string</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Pairs-and-lists.html#index-list_002dneighbors-83"><code>list-neighbors</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-list_002dref-81"><code>list-ref</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-list_002dtail-77"><code>list-tail</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-lists-37">lists</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Ports.html#index-load-283"><code>load</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-log-204"><code>log</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Encapsulations.html#index-make_002dencapsulation_002dtype-140"><code>make-encapsulation-type</code></a>: <a href="Encapsulations.html#Encapsulations">Encapsulations</a></li> +<li><a href="Environments.html#index-make_002denvironment-99"><code>make-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Numbers.html#index-make_002dinexact-189"><code>make-inexact</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Environments.html#index-make_002dkernel_002dstandard_002denvironment-104"><code>make-kernel-standard-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Keyed-Variables.html#index-make_002dkeyed_002ddynamic_002dvariable-148"><code>make-keyed-dynamic-variable</code></a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> +<li><a href="Keyed-Variables.html#index-make_002dkeyed_002dstatic_002dvariable-150"><code>make-keyed-static-variable</code></a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> +<li><a href="Strings.html#index-make_002dstring-225"><code>make-string</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Combiners.html#index-map-125"><code>map</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Pairs-and-lists.html#index-map-79"><code>map</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-max-181"><code>max</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Pairs-and-lists.html#index-member_003f-86"><code>member?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Promises.html#index-memoize-145"><code>memoize</code></a>: <a href="Promises.html#Promises">Promises</a></li> +<li><a href="Pairs-and-lists.html#index-memq_003f-93"><code>memq?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-min-182"><code>min</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-mod-171"><code>mod</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-mod0-174"><code>mod0</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-negative_003f-177"><code>negative?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-newline-290"><code>newline</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Pairs-and-lists.html#index-nil-35">nil</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Booleans.html#index-not_003f-15"><code>not?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> +<li><a href="Pairs-and-lists.html#index-null_003f-39"><code>null?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-number_003f-152"><code>number?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-numbers-151">numbers</a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-numerator-195"><code>numerator</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="A-Sample-Applicative-Description.html#index-object-descriptions-10">object descriptions</a>: <a href="A-Sample-Applicative-Description.html#A-Sample-Applicative-Description">A Sample Applicative Description</a></li> -<li><a href="Numbers.html#index-odd_003f-177"><code>odd?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Ports.html#index-open_002dbinary_002dinput_002dfile-270"><code>open-binary-input-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Ports.html#index-open_002dbinary_002doutput_002dfile-272"><code>open-binary-output-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Ports.html#index-open_002dinput_002dfile-269"><code>open-input-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Ports.html#index-open_002doutput_002dfile-271"><code>open-output-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-odd_003f-178"><code>odd?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-open_002dbinary_002dinput_002dfile-271"><code>open-binary-input-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-open_002dbinary_002doutput_002dfile-273"><code>open-binary-output-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-open_002dinput_002dfile-270"><code>open-input-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-open_002doutput_002dfile-272"><code>open-output-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="A-Sample-Applicative-Description.html#index-operative-descriptions-9">operative descriptions</a>: <a href="A-Sample-Applicative-Description.html#A-Sample-Applicative-Description">A Sample Applicative Description</a></li> -<li><a href="Combiners.html#index-operative_003f-117"><code>operative?</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Combiners.html#index-operatives-116">operatives</a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Booleans.html#index-or_003f-16"><code>or?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> -<li><a href="Ports.html#index-output_002dport_003f-260"><code>output-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Pairs-and-lists.html#index-pair_003f-37"><code>pair?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-pairs-33">pairs</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Ports.html#index-port_003f-258"><code>port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Ports.html#index-ports-257">ports</a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Numbers.html#index-positive_003f-175"><code>positive?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Combiners.html#index-operative_003f-118"><code>operative?</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Combiners.html#index-operatives-117">operatives</a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Booleans.html#index-or_003f-17"><code>or?</code></a>: <a href="Booleans.html#Booleans">Booleans</a></li> +<li><a href="Ports.html#index-output_002dport_003f-261"><code>output-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Pairs-and-lists.html#index-pair_003f-38"><code>pair?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-pairs-34">pairs</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Ports.html#index-peek_002dchar-287"><code>peek-char</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-peek_002du8-293"><code>peek-u8</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-port_003f-259"><code>port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-ports-258">ports</a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-positive_003f-176"><code>positive?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Printing-Notation.html#index-printing-notation-5">printing notation</a>: <a href="Printing-Notation.html#Printing-Notation">Printing Notation</a></li> -<li><a href="Promises.html#index-promise_003f-141"><code>promise?</code></a>: <a href="Promises.html#Promises">Promises</a></li> -<li><a href="Promises.html#index-promises-140">promises</a>: <a href="Promises.html#Promises">Promises</a></li> -<li><a href="Numbers.html#index-rational_003f-153"><code>rational?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-rationalize-200"><code>rationalize</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Ports.html#index-read-278"><code>read</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Numbers.html#index-real_002d_003eexact-190"><code>real-&gt;exact</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-real_002d_003einexact-189"><code>real-&gt;inexact</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-real_003f-154"><code>real?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Pairs-and-lists.html#index-reduce-88"><code>reduce</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-robust_003f-158"><code>robust?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Continuations.html#index-root_002dcontinuation-132"><code>root-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="Numbers.html#index-round-199"><code>round</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Pairs-and-lists.html#index-set_002dcar_0021-40"><code>set-car!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Pairs-and-lists.html#index-set_002dcdr_0021-41"><code>set-cdr!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Numbers.html#index-simplest_002drational-201"><code>simplest-rational</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-sin-204"><code>sin</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-sqrt-210"><code>sqrt</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Strings.html#index-string-225"><code>string</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002d_003eimmutable_002dstring-233"><code>string-&gt;immutable-string</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002d_003elist-234"><code>string-&gt;list</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Symbols.html#index-string_002d_003esymbol-25"><code>string-&gt;symbol</code></a>: <a href="Symbols.html#Symbols">Symbols</a></li> -<li><a href="Strings.html#index-string_002dappend-231"><code>string-append</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dci_003c_003d_003f-221"><code>string-ci&lt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dci_003c_003f-220"><code>string-ci&lt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dci_003d_003f-219"><code>string-ci=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dci_003e_003d_003f-223"><code>string-ci&gt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dci_003e_003f-222"><code>string-ci&gt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dcopy-232"><code>string-copy</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dfill_0021-229"><code>string-fill!</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dlength-226"><code>string-length</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dref-227"><code>string-ref</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_002dset_0021-228"><code>string-set!</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_003c_003d_003f-216"><code>string&lt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_003c_003f-215"><code>string&lt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_003d_003f-214"><code>string=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_003e_003d_003f-218"><code>string&gt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_003e_003f-217"><code>string&gt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-string_003f-213"><code>string?</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-strings-212">strings</a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Strings.html#index-substring-230"><code>substring</code></a>: <a href="Strings.html#Strings">Strings</a></li> -<li><a href="Symbols.html#index-symbol_002d_003estring-24"><code>symbol-&gt;string</code></a>: <a href="Symbols.html#Symbols">Symbols</a></li> -<li><a href="Symbols.html#index-symbol_003f-23"><code>symbol?</code></a>: <a href="Symbols.html#Symbols">Symbols</a></li> -<li><a href="Symbols.html#index-symbols-22">symbols</a>: <a href="Symbols.html#Symbols">Symbols</a></li> -<li><a href="Numbers.html#index-tan-206"><code>tan</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Ports.html#index-textual_002dport_003f-261"><code>textual-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="Numbers.html#index-truncate-198"><code>truncate</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Numbers.html#index-undefined_003f-159"><code>undefined?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Combiners.html#index-unwrap-121"><code>unwrap</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Numbers.html#index-with_002dstrict_002darithmetic-191"><code>with-strict-arithmetic</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="Combiners.html#index-wrap-120"><code>wrap</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> -<li><a href="Numbers.html#index-zero_003f-168"><code>zero?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Promises.html#index-promise_003f-142"><code>promise?</code></a>: <a href="Promises.html#Promises">Promises</a></li> +<li><a href="Promises.html#index-promises-141">promises</a>: <a href="Promises.html#Promises">Promises</a></li> +<li><a href="Numbers.html#index-rational_003f-154"><code>rational?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-rationalize-201"><code>rationalize</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-read-279"><code>read</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-read_002dchar-286"><code>read-char</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-read_002du8-292"><code>read-u8</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-real_002d_003eexact-191"><code>real-&gt;exact</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-real_002d_003einexact-190"><code>real-&gt;inexact</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-real_003f-155"><code>real?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Pairs-and-lists.html#index-reduce-89"><code>reduce</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Ports.html#index-rename_002dfile-299"><code>rename-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-robust_003f-159"><code>robust?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Continuations.html#index-root_002dcontinuation-133"><code>root-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> +<li><a href="Numbers.html#index-round-200"><code>round</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Pairs-and-lists.html#index-set_002dcar_0021-41"><code>set-car!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Pairs-and-lists.html#index-set_002dcdr_0021-42"><code>set-cdr!</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Numbers.html#index-simplest_002drational-202"><code>simplest-rational</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-sin-205"><code>sin</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Numbers.html#index-sqrt-211"><code>sqrt</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Strings.html#index-string-226"><code>string</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002d_003eimmutable_002dstring-234"><code>string-&gt;immutable-string</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002d_003elist-235"><code>string-&gt;list</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Symbols.html#index-string_002d_003esymbol-26"><code>string-&gt;symbol</code></a>: <a href="Symbols.html#Symbols">Symbols</a></li> +<li><a href="Strings.html#index-string_002dappend-232"><code>string-append</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dci_003c_003d_003f-222"><code>string-ci&lt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dci_003c_003f-221"><code>string-ci&lt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dci_003d_003f-220"><code>string-ci=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dci_003e_003d_003f-224"><code>string-ci&gt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dci_003e_003f-223"><code>string-ci&gt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dcopy-233"><code>string-copy</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dfill_0021-230"><code>string-fill!</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dlength-227"><code>string-length</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dref-228"><code>string-ref</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_002dset_0021-229"><code>string-set!</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_003c_003d_003f-217"><code>string&lt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_003c_003f-216"><code>string&lt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_003d_003f-215"><code>string=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_003e_003d_003f-219"><code>string&gt;=?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_003e_003f-218"><code>string&gt;?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-string_003f-214"><code>string?</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-strings-213">strings</a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Strings.html#index-substring-231"><code>substring</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Symbols.html#index-symbol_002d_003estring-25"><code>symbol-&gt;string</code></a>: <a href="Symbols.html#Symbols">Symbols</a></li> +<li><a href="Symbols.html#index-symbol_003f-24"><code>symbol?</code></a>: <a href="Symbols.html#Symbols">Symbols</a></li> +<li><a href="Symbols.html#index-symbols-23">symbols</a>: <a href="Symbols.html#Symbols">Symbols</a></li> +<li><a href="Numbers.html#index-tan-207"><code>tan</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-textual_002dport_003f-262"><code>textual-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-truncate-199"><code>truncate</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Ports.html#index-u8_002dready_003f-294"><code>u8-ready?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-undefined_003f-160"><code>undefined?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Combiners.html#index-unwrap-122"><code>unwrap</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Ports.html#index-with_002derror_002dto_002dfile-266"><code>with-error-to-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-with_002dinput_002dfrom_002dfile-264"><code>with-input-from-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-with_002doutput_002dto_002dfile-265"><code>with-output-to-file</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-with_002dstrict_002darithmetic-192"><code>with-strict-arithmetic</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Combiners.html#index-wrap-121"><code>wrap</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> +<li><a href="Ports.html#index-write-280"><code>write</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-write_002dchar-289"><code>write-char</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Ports.html#index-write_002du8-295"><code>write-u8</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Numbers.html#index-zero_003f-169"><code>zero?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> </ul><!-- Print the tables of contents --> <div class="shortcontents"> @@ -315,21 +341,22 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <ul> <li><a href="Alphabetical-Index.html#toc_License">MIT/X11 License</a></li> <li><a href="Alphabetical-Index.html#toc_Introduction">1 Introduction</a></li> -<li><a href="Alphabetical-Index.html#toc_Booleans">2 Booleans</a></li> -<li><a href="Alphabetical-Index.html#toc_Equivalence">3 Equivalence</a></li> -<li><a href="Alphabetical-Index.html#toc_Symbols">4 Symbols</a></li> -<li><a href="Alphabetical-Index.html#toc_Control">5 Control</a></li> -<li><a href="Alphabetical-Index.html#toc_Pairs-and-lists">6 Pairs and lists</a></li> -<li><a href="Alphabetical-Index.html#toc_Environments">7 Environments</a></li> -<li><a href="Alphabetical-Index.html#toc_Combiners">8 Combiners</a></li> -<li><a href="Alphabetical-Index.html#toc_Continuations">9 Continuations</a></li> -<li><a href="Alphabetical-Index.html#toc_Encapsulations">10 Encapsulations</a></li> -<li><a href="Alphabetical-Index.html#toc_Promises">11 Promises</a></li> -<li><a href="Alphabetical-Index.html#toc_Keyed-Variables">12 Keyed Variables</a></li> -<li><a href="Alphabetical-Index.html#toc_Numbers">13 Numbers</a></li> -<li><a href="Alphabetical-Index.html#toc_Strings">14 Strings</a></li> -<li><a href="Alphabetical-Index.html#toc_Characters">15 Characters</a></li> -<li><a href="Alphabetical-Index.html#toc_Ports">16 Ports</a></li> +<li><a href="Alphabetical-Index.html#toc_Interpreter">2 Interpreter</a></li> +<li><a href="Alphabetical-Index.html#toc_Booleans">3 Booleans</a></li> +<li><a href="Alphabetical-Index.html#toc_Equivalence">4 Equivalence</a></li> +<li><a href="Alphabetical-Index.html#toc_Symbols">5 Symbols</a></li> +<li><a href="Alphabetical-Index.html#toc_Control">6 Control</a></li> +<li><a href="Alphabetical-Index.html#toc_Pairs-and-lists">7 Pairs and lists</a></li> +<li><a href="Alphabetical-Index.html#toc_Environments">8 Environments</a></li> +<li><a href="Alphabetical-Index.html#toc_Combiners">9 Combiners</a></li> +<li><a href="Alphabetical-Index.html#toc_Continuations">10 Continuations</a></li> +<li><a href="Alphabetical-Index.html#toc_Encapsulations">11 Encapsulations</a></li> +<li><a href="Alphabetical-Index.html#toc_Promises">12 Promises</a></li> +<li><a href="Alphabetical-Index.html#toc_Keyed-Variables">13 Keyed Variables</a></li> +<li><a href="Alphabetical-Index.html#toc_Numbers">14 Numbers</a></li> +<li><a href="Alphabetical-Index.html#toc_Strings">15 Strings</a></li> +<li><a href="Alphabetical-Index.html#toc_Characters">16 Characters</a></li> +<li><a href="Alphabetical-Index.html#toc_Ports">17 Ports</a></li> <li><a href="Alphabetical-Index.html#toc_Alphabetical-Index">Index</a></li> </ul> </div> @@ -355,25 +382,33 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </li></ul> <li><a href="Acknowledgements.html#Acknowledgements">1.4 Acknowledgements</a> </li></ul> -<li><a name="toc_Booleans" href="Booleans.html#Booleans">2 Booleans</a> -<li><a name="toc_Equivalence" href="Equivalence.html#Equivalence">3 Equivalence</a> -<li><a name="toc_Symbols" href="Symbols.html#Symbols">4 Symbols</a> -<li><a name="toc_Control" href="Control.html#Control">5 Control</a> -<li><a name="toc_Pairs-and-lists" href="Pairs-and-lists.html#Pairs-and-lists">6 Pairs and lists</a> -<li><a name="toc_Environments" href="Environments.html#Environments">7 Environments</a> -<li><a name="toc_Combiners" href="Combiners.html#Combiners">8 Combiners</a> -<li><a name="toc_Continuations" href="Continuations.html#Continuations">9 Continuations</a> -<li><a name="toc_Encapsulations" href="Encapsulations.html#Encapsulations">10 Encapsulations</a> -<li><a name="toc_Promises" href="Promises.html#Promises">11 Promises</a> -<li><a name="toc_Keyed-Variables" href="Keyed-Variables.html#Keyed-Variables">12 Keyed Variables</a> +<li><a name="toc_Interpreter" href="Interpreter.html#Interpreter">2 Interpreter</a> <ul> -<li><a href="Keyed-Variables.html#Keyed-Variables">12.1 Keyed Dynamic Variables</a> -<li><a href="Keyed-Variables.html#Keyed-Variables">12.2 Keyed Static Variables</a> +<li><a href="Interpreter.html#Interpreter">2.1 Invocation</a> +<li><a href="Interpreter.html#Interpreter">2.2 Description</a> +<li><a href="Interpreter.html#Interpreter">2.3 Options</a> +<li><a href="Interpreter.html#Interpreter">2.4 Exit Status</a> +<li><a href="Interpreter.html#Interpreter">2.5 Environment Variables</a> </li></ul> -<li><a name="toc_Numbers" href="Numbers.html#Numbers">13 Numbers</a> -<li><a name="toc_Strings" href="Strings.html#Strings">14 Strings</a> -<li><a name="toc_Characters" href="Characters.html#Characters">15 Characters</a> -<li><a name="toc_Ports" href="Ports.html#Ports">16 Ports</a> +<li><a name="toc_Booleans" href="Booleans.html#Booleans">3 Booleans</a> +<li><a name="toc_Equivalence" href="Equivalence.html#Equivalence">4 Equivalence</a> +<li><a name="toc_Symbols" href="Symbols.html#Symbols">5 Symbols</a> +<li><a name="toc_Control" href="Control.html#Control">6 Control</a> +<li><a name="toc_Pairs-and-lists" href="Pairs-and-lists.html#Pairs-and-lists">7 Pairs and lists</a> +<li><a name="toc_Environments" href="Environments.html#Environments">8 Environments</a> +<li><a name="toc_Combiners" href="Combiners.html#Combiners">9 Combiners</a> +<li><a name="toc_Continuations" href="Continuations.html#Continuations">10 Continuations</a> +<li><a name="toc_Encapsulations" href="Encapsulations.html#Encapsulations">11 Encapsulations</a> +<li><a name="toc_Promises" href="Promises.html#Promises">12 Promises</a> +<li><a name="toc_Keyed-Variables" href="Keyed-Variables.html#Keyed-Variables">13 Keyed Variables</a> +<ul> +<li><a href="Keyed-Variables.html#Keyed-Variables">13.1 Keyed Dynamic Variables</a> +<li><a href="Keyed-Variables.html#Keyed-Variables">13.2 Keyed Static Variables</a> +</li></ul> +<li><a name="toc_Numbers" href="Numbers.html#Numbers">14 Numbers</a> +<li><a name="toc_Strings" href="Strings.html#Strings">15 Strings</a> +<li><a name="toc_Characters" href="Characters.html#Characters">16 Characters</a> +<li><a name="toc_Ports" href="Ports.html#Ports">17 Ports</a> <li><a name="toc_Alphabetical-Index" href="Alphabetical-Index.html#Alphabetical-Index">Index</a> </li></ul> </div> diff --git a/doc/html/Booleans.html b/doc/html/Booleans.html @@ -5,7 +5,7 @@ <meta name="description" content="klisp Reference Manual"> <meta name="generator" content="makeinfo 4.13"> <link title="Top" rel="start" href="index.html#Top"> -<link rel="prev" href="Introduction.html#Introduction" title="Introduction"> +<link rel="prev" href="Interpreter.html#Interpreter" title="Interpreter"> <link rel="next" href="Equivalence.html#Equivalence" title="Equivalence"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <meta http-equiv="Content-Style-Type" content="text/css"> @@ -26,15 +26,15 @@ <a name="Booleans"></a> <p> Next:&nbsp;<a rel="next" accesskey="n" href="Equivalence.html#Equivalence">Equivalence</a>, -Previous:&nbsp;<a rel="previous" accesskey="p" href="Introduction.html#Introduction">Introduction</a>, +Previous:&nbsp;<a rel="previous" accesskey="p" href="Interpreter.html#Interpreter">Interpreter</a>, Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <hr> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">2 Booleans</h2> +<h2 class="chapter">3 Booleans</h2> -<p><a name="index-booleans-12"></a> +<p><a name="index-booleans-13"></a> The boolean data type consists of two values, which are called true and false, and have respectively external representations <code>#t</code> and <code>#f</code>. There are no possible mutations of either of these two @@ -42,31 +42,31 @@ and <code>#f</code>. There are no possible mutations of either of these two values, and the boolean type is encapsulated. <div class="defun"> -&mdash; Applicative: <b>boolean?</b> (<var>boolean? . objects</var>)<var><a name="index-boolean_003f-13"></a></var><br> +&mdash; Applicative: <b>boolean?</b> (<var>boolean? . objects</var>)<var><a name="index-boolean_003f-14"></a></var><br> <blockquote><p> The primitive type predicate for type boolean. <code>boolean?</code> returns true iff all the objects in <code>objects</code> are of type boolean. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>not?</b> (<var>not? boolean</var>)<var><a name="index-not_003f-14"></a></var><br> +&mdash; Applicative: <b>not?</b> (<var>not? boolean</var>)<var><a name="index-not_003f-15"></a></var><br> <blockquote><p> Applicative <code>not?</code> is a predicate that returns the logical negation of its argument. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>and?</b> (<var>and? . booleans</var>)<var><a name="index-and_003f-15"></a></var><br> +&mdash; Applicative: <b>and?</b> (<var>and? . booleans</var>)<var><a name="index-and_003f-16"></a></var><br> <blockquote><p> Applicative <code>and?</code> is a predicate that returns true unless one or more of its arguments are false. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>or?</b> (<var>or? . booleans</var>)<var><a name="index-or_003f-16"></a></var><br> +&mdash; Applicative: <b>or?</b> (<var>or? . booleans</var>)<var><a name="index-or_003f-17"></a></var><br> <blockquote><p> Applicative <code>or?</code> is a predicate that returns false unless one or more of its arguments are true. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$and?</b> (<var>$and? . &lt;list&gt;</var>)<var><a name="index-g_t_0024and_003f-17"></a></var><br> +&mdash; Operative: <b>$and?</b> (<var>$and? . &lt;list&gt;</var>)<var><a name="index-g_t_0024and_003f-18"></a></var><br> <blockquote><p> The <code>$and?</code> operative performs a &ldquo;short-circuit and&rdquo; of its operands. It evaluates them from left to right, until either an operand evaluates to false, or the end of the list is reached. If the @@ -82,7 +82,7 @@ error is signaled (even if it's the last one). </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$or?</b> (<var>$or? . &lt;list&gt;</var>)<var><a name="index-g_t_0024or_003f-18"></a></var><br> +&mdash; Operative: <b>$or?</b> (<var>$or? . &lt;list&gt;</var>)<var><a name="index-g_t_0024or_003f-19"></a></var><br> <blockquote><p> The <code>$or?</code> operative performs a &ldquo;short-circuit or&rdquo; of its operands. It evaluates them from left to right, until either an operand evaluates to true, or the end of the list is reached. If the diff --git a/doc/html/Characters.html b/doc/html/Characters.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">15 Characters</h2> +<h2 class="chapter">16 Characters</h2> -<p><a name="index-characters-236"></a> +<p><a name="index-characters-237"></a> A character is an object that represents an ASCII character (for now, only ASCII is supported in klisp, in the future, full UNICODE will be supported). The external representation of characters @@ -47,50 +47,50 @@ encapsulated. features defined here were taken mostly from r5rs scheme. <div class="defun"> -&mdash; Applicative: <b>char?</b> (<var>char? . objects</var>)<var><a name="index-char_003f-237"></a></var><br> +&mdash; Applicative: <b>char?</b> (<var>char? . objects</var>)<var><a name="index-char_003f-238"></a></var><br> <blockquote><p> The primitive type predicate for type character. <code>char?</code> returns true iff all the objects in <code>objects</code> are of type character. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>char=?</b> (<var>char=? . chars</var>)<var><a name="index-char_003d_003f-238"></a></var><br> -&mdash; Applicative: <b>char&lt;?</b> (<var>char&lt;? . chars</var>)<var><a name="index-char_003c_003f-239"></a></var><br> -&mdash; Applicative: <b>char&lt;=?</b> (<var>char&lt;=? . chars</var>)<var><a name="index-char_003c_003d_003f-240"></a></var><br> -&mdash; Applicative: <b>char&gt;?</b> (<var>char&gt;? . chars</var>)<var><a name="index-char_003e_003f-241"></a></var><br> -&mdash; Applicative: <b>char&gt;=?</b> (<var>char&gt;=? . chars</var>)<var><a name="index-char_003e_003d_003f-242"></a></var><br> +&mdash; Applicative: <b>char=?</b> (<var>char=? . chars</var>)<var><a name="index-char_003d_003f-239"></a></var><br> +&mdash; Applicative: <b>char&lt;?</b> (<var>char&lt;? . chars</var>)<var><a name="index-char_003c_003f-240"></a></var><br> +&mdash; Applicative: <b>char&lt;=?</b> (<var>char&lt;=? . chars</var>)<var><a name="index-char_003c_003d_003f-241"></a></var><br> +&mdash; Applicative: <b>char&gt;?</b> (<var>char&gt;? . chars</var>)<var><a name="index-char_003e_003f-242"></a></var><br> +&mdash; Applicative: <b>char&gt;=?</b> (<var>char&gt;=? . chars</var>)<var><a name="index-char_003e_003d_003f-243"></a></var><br> <blockquote><p> These predicates compare any number of characters using their ASCII value for the comparison. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>char-ci=?</b> (<var>char-ci=? . chars</var>)<var><a name="index-char_002dci_003d_003f-243"></a></var><br> -&mdash; Applicative: <b>char-ci&lt;?</b> (<var>char-ci&lt;? . chars</var>)<var><a name="index-char_002dci_003c_003f-244"></a></var><br> -&mdash; Applicative: <b>char-ci&lt;=?</b> (<var>char-ci&lt;=? . chars</var>)<var><a name="index-char_002dci_003c_003d_003f-245"></a></var><br> -&mdash; Applicative: <b>char-ci&gt;?</b> (<var>char-ci&gt;? . chars</var>)<var><a name="index-char_002dci_003e_003f-246"></a></var><br> -&mdash; Applicative: <b>char-ci&gt;=?</b> (<var>char-ci&gt;=? . chars</var>)<var><a name="index-char_002dci_003e_003d_003f-247"></a></var><br> +&mdash; Applicative: <b>char-ci=?</b> (<var>char-ci=? . chars</var>)<var><a name="index-char_002dci_003d_003f-244"></a></var><br> +&mdash; Applicative: <b>char-ci&lt;?</b> (<var>char-ci&lt;? . chars</var>)<var><a name="index-char_002dci_003c_003f-245"></a></var><br> +&mdash; Applicative: <b>char-ci&lt;=?</b> (<var>char-ci&lt;=? . chars</var>)<var><a name="index-char_002dci_003c_003d_003f-246"></a></var><br> +&mdash; Applicative: <b>char-ci&gt;?</b> (<var>char-ci&gt;? . chars</var>)<var><a name="index-char_002dci_003e_003f-247"></a></var><br> +&mdash; Applicative: <b>char-ci&gt;=?</b> (<var>char-ci&gt;=? . chars</var>)<var><a name="index-char_002dci_003e_003d_003f-248"></a></var><br> <blockquote><p> These predicates convert the chars to lowercase and then compare their ASCII values. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>char-alphabetic?</b> (<var>char-alphabetic? . chars</var>)<var><a name="index-char_002dalphabetic_003f-248"></a></var><br> -&mdash; Applicative: <b>char-numeric?</b> (<var>char-numeric? . chars</var>)<var><a name="index-char_002dnumeric_003f-249"></a></var><br> -&mdash; Applicative: <b>char-whitespace?</b> (<var>char-whitespace? . chars</var>)<var><a name="index-char_002dwhitespace_003f-250"></a></var><br> +&mdash; Applicative: <b>char-alphabetic?</b> (<var>char-alphabetic? . chars</var>)<var><a name="index-char_002dalphabetic_003f-249"></a></var><br> +&mdash; Applicative: <b>char-numeric?</b> (<var>char-numeric? . chars</var>)<var><a name="index-char_002dnumeric_003f-250"></a></var><br> +&mdash; Applicative: <b>char-whitespace?</b> (<var>char-whitespace? . chars</var>)<var><a name="index-char_002dwhitespace_003f-251"></a></var><br> <blockquote><p> These predicates return true iff all of their arguments are respectively &ldquo;alphabetic&rdquo;, &ldquo;numeric&rdquo;, or &ldquo;whitespace&rdquo;. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>char-upper-case?</b> (<var>char-upper-case? . chars</var>)<var><a name="index-char_002dupper_002dcase_003f-251"></a></var><br> -&mdash; Applicative: <b>char-lower-case?</b> (<var>char-lower-case? . chars</var>)<var><a name="index-char_002dlower_002dcase_003f-252"></a></var><br> +&mdash; Applicative: <b>char-upper-case?</b> (<var>char-upper-case? . chars</var>)<var><a name="index-char_002dupper_002dcase_003f-252"></a></var><br> +&mdash; Applicative: <b>char-lower-case?</b> (<var>char-lower-case? . chars</var>)<var><a name="index-char_002dlower_002dcase_003f-253"></a></var><br> <blockquote><p> These predicates return true iff all of their arguments are respectively &ldquo;upper case, or &ldquo;lower case&rdquo;. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>char-upcase</b> (<var>char-upcase char</var>)<var><a name="index-char_002dupcase-253"></a></var><br> -&mdash; Applicative: <b>char-downcase</b> (<var>char-downcase char</var>)<var><a name="index-char_002ddowncase-254"></a></var><br> +&mdash; Applicative: <b>char-upcase</b> (<var>char-upcase char</var>)<var><a name="index-char_002dupcase-254"></a></var><br> +&mdash; Applicative: <b>char-downcase</b> (<var>char-downcase char</var>)<var><a name="index-char_002ddowncase-255"></a></var><br> <blockquote><p> These applicatives return a character <code>char2</code> so that: <pre class="example"> (char-ci=? char char2) &rArr; #t </pre> @@ -102,8 +102,8 @@ respectively &ldquo;upper case, or &ldquo;lower case&rdquo;. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>char-&gt;integer</b> (<var>char-&gt;integer char</var>)<var><a name="index-char_002d_003einteger-255"></a></var><br> -&mdash; Applicative: <b>integer-&gt;char</b> (<var>integer-&gt;char k</var>)<var><a name="index-integer_002d_003echar-256"></a></var><br> +&mdash; Applicative: <b>char-&gt;integer</b> (<var>char-&gt;integer char</var>)<var><a name="index-char_002d_003einteger-256"></a></var><br> +&mdash; Applicative: <b>integer-&gt;char</b> (<var>integer-&gt;char k</var>)<var><a name="index-integer_002d_003echar-257"></a></var><br> <blockquote><p> These applicatives convert between ASCII values (as exact integers between 0 and 127) and characters. If an integer that is out of range for ASCII characters is passed to <code>integer-&gt;char</code>, an error is diff --git a/doc/html/Combiners.html b/doc/html/Combiners.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">8 Combiners</h2> +<h2 class="chapter">9 Combiners</h2> -<p><a name="index-combiners-114"></a><a name="index-applicatives-115"></a><a name="index-operatives-116"></a> +<p><a name="index-combiners-115"></a><a name="index-applicatives-116"></a><a name="index-operatives-117"></a> There are two types of combiners in Kernel, operative and applicative. Both types are encapsulated. All combiners are immutable. Two applicatives are <code>eq?</code> iff their underlying combiners are @@ -47,21 +47,21 @@ iff they are <code>eq?</code>. <!-- TODO add xref for eq? and equal? --> <div class="defun"> -&mdash; Applicative: <b>operative?</b> (<var>operative? . objects</var>)<var><a name="index-operative_003f-117"></a></var><br> +&mdash; Applicative: <b>operative?</b> (<var>operative? . objects</var>)<var><a name="index-operative_003f-118"></a></var><br> <blockquote><p> The primitive type predicate for type operative. <code>operative?</code> returns true iff all the objects in <code>objects</code> are of type operative. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>applicative?</b> (<var>applicative? . objects</var>)<var><a name="index-applicative_003f-118"></a></var><br> +&mdash; Applicative: <b>applicative?</b> (<var>applicative? . objects</var>)<var><a name="index-applicative_003f-119"></a></var><br> <blockquote><p> The primitive type predicate for type applicative. <code>applicative?</code> returns true iff all the objects in <code>objects</code> are of type applicative. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$vau</b> (<var>$vau &lt;formals&gt; &lt;eformal&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0024vau-119"></a></var><br> +&mdash; Operative: <b>$vau</b> (<var>$vau &lt;formals&gt; &lt;eformal&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0024vau-120"></a></var><br> <blockquote><!-- TODO add xref to formal parameter tree --> <p><code>&lt;formals&gt;</code> should be a formal parameter tree; <code>&lt;eformal&gt;</code> should be either a symbol or <code>#ignore</code>. If <code>&lt;formals&gt;</code> does @@ -110,19 +110,19 @@ operative is compound. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>wrap</b> (<var>wrap combiner</var>)<var><a name="index-wrap-120"></a></var><br> +&mdash; Applicative: <b>wrap</b> (<var>wrap combiner</var>)<var><a name="index-wrap-121"></a></var><br> <blockquote><p> The <code>wrap</code> applicative returns an applicative whose underlying combiner is <code>combiner</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>unwrap</b> (<var>unwrap applicative</var>)<var><a name="index-unwrap-121"></a></var><br> +&mdash; Applicative: <b>unwrap</b> (<var>unwrap applicative</var>)<var><a name="index-unwrap-122"></a></var><br> <blockquote><p> The <code>unwrap</code> applicative returns the underlying combiner of <code>applicative</code>. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$lambda</b> (<var>$lambda &lt;formals&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0024lambda-122"></a></var><br> +&mdash; Operative: <b>$lambda</b> (<var>$lambda &lt;formals&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0024lambda-123"></a></var><br> <blockquote><p> <code>&lt;formals&gt;</code> should be a formal parameter tree. <p>The <code>$lambda</code> operative is defined by the following equivalence: @@ -132,7 +132,7 @@ combiner is <code>combiner</code>. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>apply</b> (<var>apply applicative object </var>[<var>environment</var>])<var><a name="index-apply-123"></a></var><br> +&mdash; Applicative: <b>apply</b> (<var>apply applicative object </var>[<var>environment</var>])<var><a name="index-apply-124"></a></var><br> <blockquote><p> Applicative <code>apply</code> combines the underlying combiner of <code>applicative</code> with <code>object</code> in a tail context with dynamic environment <code>environment</code> (if the long form is used) or in an @@ -148,7 +148,7 @@ empty environment (if the short form is used). </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>map</b> (<var>map applicative . lists</var>)<var><a name="index-map-124"></a></var><br> +&mdash; Applicative: <b>map</b> (<var>map applicative . lists</var>)<var><a name="index-map-125"></a></var><br> <blockquote><p> <code>lists</code> must be a nonempty list of lists; if there are two or <!-- TODO add xref to length --> more, they must all have the same length. If <code>lists</code> is empty, or @@ -177,7 +177,7 @@ times. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>combiner?</b> (<var>combiner? . objects</var>)<var><a name="index-combiner_003f-125"></a></var><br> +&mdash; Applicative: <b>combiner?</b> (<var>combiner? . objects</var>)<var><a name="index-combiner_003f-126"></a></var><br> <blockquote><p> The primitive type predicate for type combiner. <code>combiner?</code> returns true iff all the objects in <code>objects</code> are of type combiner (i.e. applicative or operative). diff --git a/doc/html/Command-Line-Options.html b/doc/html/Command-Line-Options.html @@ -0,0 +1 @@ +<meta http-equiv="refresh" content="0; url=Interpreter.html#Command%20Line%20Options"> diff --git a/doc/html/Continuations.html b/doc/html/Continuations.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">9 Continuations</h2> +<h2 class="chapter">10 Continuations</h2> -<p><a name="index-continuations-126"></a> +<p><a name="index-continuations-127"></a> A continuation is a plan for all future computation, parameterized by a value to be provided, and contingent on the states of all mutable data structures (which notably may include environments). When the @@ -71,14 +71,14 @@ The continuation type is encapsulated. <!-- TODO add dynamic extent & guard selection/interception to the intro --> <div class="defun"> -&mdash; Applicative: <b>continuation?</b> (<var>continuation? . objects</var>)<var><a name="index-continuation_003f-127"></a></var><br> +&mdash; Applicative: <b>continuation?</b> (<var>continuation? . objects</var>)<var><a name="index-continuation_003f-128"></a></var><br> <blockquote><p> The primitive type predicate for type continuation. <code>continuation?</code> returns true iff all the objects in <code>objects</code> are of type continuation. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>call/cc</b> (<var>call/cc combiner</var>)<var><a name="index-call_002fcc-128"></a></var><br> +&mdash; Applicative: <b>call/cc</b> (<var>call/cc combiner</var>)<var><a name="index-call_002fcc-129"></a></var><br> <blockquote><p> Calls <code>combiner</code> in the dynamic environment as a tail context, passing as sole operand to it the continuation to which <code>call/cc</code> would normally return its result. (That is, constructs such a @@ -87,7 +87,7 @@ combination and evaluates it in the dynamic environment.) </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>extend-continuation</b> (<var>extend-continuation continuation applicative </var>[<var>environment</var>])<var><a name="index-extend_002dcontinuation-129"></a></var><br> +&mdash; Applicative: <b>extend-continuation</b> (<var>extend-continuation continuation applicative </var>[<var>environment</var>])<var><a name="index-extend_002dcontinuation-130"></a></var><br> <blockquote><p> The <code>extend-continuation</code> applicative constructs and returns a new child of <code>continuation</code> that, when it normally receives a value v, calls the underlying combiner of <code>applicative</code> with @@ -102,7 +102,7 @@ normally to be returned to <code>continuation</code>. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>guard-continuation</b> (<var>guard-continuation entry-guards continuation exit-guards</var>)<var><a name="index-guard_002dcontinuation-130"></a></var><br> +&mdash; Applicative: <b>guard-continuation</b> (<var>guard-continuation entry-guards continuation exit-guards</var>)<var><a name="index-guard_002dcontinuation-131"></a></var><br> <blockquote><p> <code>entry-guards</code> and <code>exit-guards</code> should each be a list of clauses; each clause should be a list of length two, whose first element is a continuation, and whose second element is an applicative @@ -137,7 +137,7 @@ independent of any subsequent mutations to the arguments. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>continuation-&gt;applicative</b> (<var>continuation-&gt;applicative continuation</var>)<var><a name="index-continuation_002d_003eapplicative-131"></a></var><br> +&mdash; Applicative: <b>continuation-&gt;applicative</b> (<var>continuation-&gt;applicative continuation</var>)<var><a name="index-continuation_002d_003eapplicative-132"></a></var><br> <blockquote><p> Returns an applicative whose underlying operative abnormally passes its operand tree to <code>continuation</code>, thus: A series of interceptors are selected to handle the abnormal pass, and a @@ -149,7 +149,7 @@ passed to the derived continuation. </p></blockquote></div> <div class="defun"> -&mdash; Variable: <b>root-continuation</b><var><a name="index-root_002dcontinuation-132"></a></var><br> +&mdash; Variable: <b>root-continuation</b><var><a name="index-root_002dcontinuation-133"></a></var><br> <blockquote><p> This continuation is the ancestor of all other continuations. When it normally receives a value, it terminates the Kernel session. (For example, if the system is running a read-eval-print loop, it exits the @@ -158,7 +158,7 @@ loop.) </p></blockquote></div> <div class="defun"> -&mdash; Variable: <b>error-continuation</b><var><a name="index-error_002dcontinuation-133"></a></var><br> +&mdash; Variable: <b>error-continuation</b><var><a name="index-error_002dcontinuation-134"></a></var><br> <blockquote><p> The dynamic extent of this continuation is mutually disjoint from the dynamic extent in which Kernel computation usually occurs (such as the dynamic extent in which the Kernel system would run a @@ -183,7 +183,7 @@ dynamic extent of <code>error-continuation</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>apply-continuation</b> (<var>apply-continuation continuation object</var>)<var><a name="index-apply_002dcontinuation-134"></a></var><br> +&mdash; Applicative: <b>apply-continuation</b> (<var>apply-continuation continuation object</var>)<var><a name="index-apply_002dcontinuation-135"></a></var><br> <blockquote><p> Applicative <code>apply-continuation</code> converts its first argument to an applicative as if by <code>continuation-&gt;applicative</code>, and then applies it as usual. @@ -195,7 +195,7 @@ applies it as usual. </blockquote></div> <div class="defun"> -&mdash; Operative: <b>(</b><var>$let/cc &lt;symbol&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0028-135"></a></var><br> +&mdash; Operative: <b>$let/cc</b> (<var>$let/cc &lt;symbol&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0024let_002fcc-136"></a></var><br> <blockquote><p> A child environment <code>e</code> of the dynamic environment is created, containing a binding of <code>&lt;symbol&gt;</code> to the continuation to which the result of the call to <code>$let/cc</code> should normally return; then, @@ -210,7 +210,7 @@ if <code>&lt;objects&gt;</code> is empty the result is inert. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>guard-dynamic-extent</b> (<var>guard-dynamic-extent entry-guards combiner exit-guards</var>)<var><a name="index-guard_002ddynamic_002dextent-136"></a></var><br> +&mdash; Applicative: <b>guard-dynamic-extent</b> (<var>guard-dynamic-extent entry-guards combiner exit-guards</var>)<var><a name="index-guard_002ddynamic_002dextent-137"></a></var><br> <blockquote><p> This applicative extends the current continuation with the specified guards, and calls <code>combiner</code> in the dynamic extent of the new continuation, with no operands and the dynamic environment of the call @@ -218,7 +218,7 @@ to <code>guard-dynamic-extent</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>exit</b> (<var>exit </var>[<var>object</var>])<var><a name="index-exit-137"></a></var><br> +&mdash; Applicative: <b>exit</b> (<var>exit </var>[<var>object</var>])<var><a name="index-exit-138"></a></var><br> <blockquote><!-- TODO add xref --> <p>Applicative <code>exit</code> initiates an abnormal transfer of <code>object</code> (or <code>#inert</code> if <code>object</code> was not specified), diff --git a/doc/html/Control.html b/doc/html/Control.html @@ -32,20 +32,20 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">5 Control</h2> +<h2 class="chapter">6 Control</h2> -<p><a name="index-control-26"></a><a name="index-inert-27"></a> The inert data type is provided for use with control combiners. It +<p><a name="index-control-27"></a><a name="index-inert-28"></a> The inert data type is provided for use with control combiners. It consists of a single immutable value, having external representation <code>#inert</code>. The inert type is encapsulated. <div class="defun"> -&mdash; Applicative: <b>inert?</b> (<var>inert? . objects</var>)<var><a name="index-inert_003f-28"></a></var><br> +&mdash; Applicative: <b>inert?</b> (<var>inert? . objects</var>)<var><a name="index-inert_003f-29"></a></var><br> <blockquote><p> The primitive type predicate for type inert. <code>inert?</code> returns true iff all the objects in <code>objects</code> are of type inert. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$if</b> (<var>$if &lt;test&gt; &lt;consequent&gt; &lt;alternative&gt;</var>)<var><a name="index-g_t_0024if-29"></a></var><br> +&mdash; Operative: <b>$if</b> (<var>$if &lt;test&gt; &lt;consequent&gt; &lt;alternative&gt;</var>)<var><a name="index-g_t_0024if-30"></a></var><br> <blockquote><p> The <code>$if</code> operative first evaluates <code>&lt;test&gt;</code> in the dynamic environment. If the result is not of type boolean, an error is signaled. If the result is true, <code>&lt;consequent&gt;</code> is then @@ -56,7 +56,7 @@ context. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$sequence</b> (<var>$sequence . &lt;objects&gt;</var>)<var><a name="index-g_t_0024sequence-30"></a></var><br> +&mdash; Operative: <b>$sequence</b> (<var>$sequence . &lt;objects&gt;</var>)<var><a name="index-g_t_0024sequence-31"></a></var><br> <blockquote><p>The <code>$sequence</code> operative evaluates the elements of the list <code>&lt;objects&gt;</code> in the dynamic environment, one at a time from left to right. If <code>&lt;objects&gt;</code> is a cyclic list, element evaluation @@ -68,7 +68,7 @@ empty list, the result is inert. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$cond</b> (<var>$cond . &lt;clauses&gt;</var>)<var><a name="index-g_t_0024cond-31"></a></var><br> +&mdash; Operative: <b>$cond</b> (<var>$cond . &lt;clauses&gt;</var>)<var><a name="index-g_t_0024cond-32"></a></var><br> <blockquote><p><code>&lt;clauses&gt;</code> should be a list of clause expressions, each of the form <code>(&lt;test&gt; . &lt;body&gt;)</code>, where body is a list of expressions. @@ -81,7 +81,7 @@ the behaviour of the <code>$cond</code> operative: </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>for-each</b> (<var>for-each . lists</var>)<var><a name="index-for_002deach-32"></a></var><br> +&mdash; Applicative: <b>for-each</b> (<var>for-each . lists</var>)<var><a name="index-for_002deach-33"></a></var><br> <blockquote><p><code>lists</code> must be a nonempty list of lists; if there are two or more, they should all be the same length. If lists is empty, or if all of its elements are not lists of the same length, an error is diff --git a/doc/html/Encapsulations.html b/doc/html/Encapsulations.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">10 Encapsulations</h2> +<h2 class="chapter">11 Encapsulations</h2> -<p><a name="index-encapsulations-138"></a> +<p><a name="index-encapsulations-139"></a> An encapsulation is an object that refers to another object, called its content. The Kernel data type encapsulation is encapsulated. Two encapsulations are <code>equal?</code> iff they are <code>eq?</code>. @@ -42,7 +42,7 @@ Encapsulations are immutable. <!-- TODO this is a little spartan... maybe add some more content --> <div class="defun"> -&mdash; Applicative: <b>make-encapsulation-type</b> (<var>make-encapsulation-type</var>)<var><a name="index-make_002dencapsulation_002dtype-139"></a></var><br> +&mdash; Applicative: <b>make-encapsulation-type</b> (<var>make-encapsulation-type</var>)<var><a name="index-make_002dencapsulation_002dtype-140"></a></var><br> <blockquote><p> Returns a list of the form <code>(e p? d)</code>, where <code>e</code>, <code>p</code>?, and <code>d</code> are applicatives, as follows. Each call to <code>make-encapsulation-type</code> returns different applicatives diff --git a/doc/html/Environments.html b/doc/html/Environments.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">7 Environments</h2> +<h2 class="chapter">8 Environments</h2> -<p><a name="index-environments-93"></a><a name="index-ignore-94"></a> +<p><a name="index-environments-94"></a><a name="index-ignore-95"></a> An environment consists of a set of bindings, and a list of zero or more references to other environments called its parents. <!-- TODO add xref to lookup algo & ground env --> @@ -55,20 +55,20 @@ external representation <code>#ignore</code>. The ignore type is encapsulated. <div class="defun"> -&mdash; Applicative: <b>environment?</b> (<var>environment? . objects</var>)<var><a name="index-environment_003f-95"></a></var><br> +&mdash; Applicative: <b>environment?</b> (<var>environment? . objects</var>)<var><a name="index-environment_003f-96"></a></var><br> <blockquote><p> The primitive type predicate for type environment. <code>environment?</code> returns true iff all the objects in <code>objects</code> are of type environment. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>ignore?</b> (<var>ignore? . objects</var>)<var><a name="index-ignore_003f-96"></a></var><br> +&mdash; Applicative: <b>ignore?</b> (<var>ignore? . objects</var>)<var><a name="index-ignore_003f-97"></a></var><br> <blockquote><p> The primitive type predicate for type ignore. <code>ignore?</code> returns true iff all the objects in <code>objects</code> are of type ignore. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>eval</b> (<var>eval expression environment</var>)<var><a name="index-eval-97"></a></var><br> +&mdash; Applicative: <b>eval</b> (<var>eval expression environment</var>)<var><a name="index-eval-98"></a></var><br> <blockquote><!-- TODO add xref to tail context --> <!-- TODO add xref to evaluation description --> <p>The <code>eval</code> applicative evaluates <code>expression</code> as a tail @@ -76,7 +76,7 @@ context in <code>environment</code>, and returns the resulting value. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>make-environment</b> (<var>make-environment . environments</var>)<var><a name="index-make_002denvironment-98"></a></var><br> +&mdash; Applicative: <b>make-environment</b> (<var>make-environment . environments</var>)<var><a name="index-make_002denvironment-99"></a></var><br> <blockquote><p> The applicative constructs and returns a new environment, with initially no local bindings, and parent environments the environments listed in <code>environments</code>. The constructed environment internally @@ -92,7 +92,7 @@ the parents. No two objects returned by different calls to </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$define!</b> (<var>$define! &lt;definiend&gt; &lt;expression&gt;</var>)<var><a name="index-g_t_0024define_0021-99"></a></var><br> +&mdash; Operative: <b>$define!</b> (<var>$define! &lt;definiend&gt; &lt;expression&gt;</var>)<var><a name="index-g_t_0024define_0021-100"></a></var><br> <blockquote><!-- TODO move formal parameter tree definition to the intro --> <!-- TODO move matching definition to the intro --> <p><code>&lt;definiend&gt;</code> should be a formal parameter tree, as described @@ -140,7 +140,7 @@ fails). The car of <code>t</code> is matched to the car of <code>o</code> in </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$let</b> (<var>$let &lt;bindings&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0024let-100"></a></var><br> +&mdash; Operative: <b>$let</b> (<var>$let &lt;bindings&gt; . &lt;objects&gt;</var>)<var><a name="index-g_t_0024let-101"></a></var><br> <blockquote><!-- TODO add xref to formal parameter tree --> <p><code>&lt;bindings&gt;</code> should be a finite list of formal-parameter-tree/expression pairings, each of the form @@ -164,7 +164,7 @@ to right, with the last (if any) evaluated as a tail context, or if </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$binds?</b> (<var>$binds? &lt;exp&gt; . &lt;symbols&gt;</var>)<var><a name="index-g_t_0024binds_003f-101"></a></var><br> +&mdash; Operative: <b>$binds?</b> (<var>$binds? &lt;exp&gt; . &lt;symbols&gt;</var>)<var><a name="index-g_t_0024binds_003f-102"></a></var><br> <blockquote><p> Operative <code>$binds</code> evaluates <code>&lt;exp&gt;</code> in the dynamic environment; call the result <code>env</code>. <code>env</code> must be an environment. The operative is a predicate that returns true iff all @@ -172,13 +172,13 @@ its later operands, <code>&lt;symbols&gt;</code>, are visibly bound in <code>env </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-current-environment</b> (<var>get-current-environment</var>)<var><a name="index-get_002dcurrent_002denvironment-102"></a></var><br> +&mdash; Applicative: <b>get-current-environment</b> (<var>get-current-environment</var>)<var><a name="index-get_002dcurrent_002denvironment-103"></a></var><br> <blockquote><p> The <code>get-current-environment</code> applicative returns the dynamic environment in which it is called. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>make-kernel-standard-environment</b> (<var>make-kernel-standard-environment</var>)<var><a name="index-make_002dkernel_002dstandard_002denvironment-103"></a></var><br> +&mdash; Applicative: <b>make-kernel-standard-environment</b> (<var>make-kernel-standard-environment</var>)<var><a name="index-make_002dkernel_002dstandard_002denvironment-104"></a></var><br> <blockquote><!-- TODO add xref to ground environment/standard environment --> <p>The <code>make-kernel-standard-environment</code> applicative returns a standard environment; that is, a child of the ground environment with @@ -186,7 +186,7 @@ no local bindings. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$let*</b> (<var>$let* &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024let_002a-104"></a></var><br> +&mdash; Operative: <b>$let*</b> (<var>$let* &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024let_002a-105"></a></var><br> <blockquote><!-- TODO add xref to formal ptree --> <p><code>&lt;bindings&gt;</code> should be a finite list of formal-parameter-tree/expression pairings, each of the form @@ -203,7 +203,7 @@ parameter tree; <code>&lt;body&gt;</code> should be a list of expressions. </blockquote></div> <div class="defun"> -&mdash; Operative: <b>$letrec</b> (<var>$letrec &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024letrec-105"></a></var><br> +&mdash; Operative: <b>$letrec</b> (<var>$letrec &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024letrec-106"></a></var><br> <blockquote><!-- add xref for $let --> <p><code>&lt;bindings&gt;</code> and <code>&lt;body&gt;</code> should be as described for <code>$let</code>. @@ -215,7 +215,7 @@ parameter tree; <code>&lt;body&gt;</code> should be a list of expressions. </blockquote></div> <div class="defun"> -&mdash; Operative: <b>$letrec*</b> (<var>$letrec* &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024letrec_002a-106"></a></var><br> +&mdash; Operative: <b>$letrec*</b> (<var>$letrec* &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024letrec_002a-107"></a></var><br> <blockquote><!-- TODO add xref to $let* --> <p><code>&lt;bindings&gt;</code> and <code>&lt;body&gt;</code> should be as described for <code>$let*</code>. @@ -229,7 +229,7 @@ parameter tree; <code>&lt;body&gt;</code> should be a list of expressions. </blockquote></div> <div class="defun"> -&mdash; Operative: <b>$let-redirect</b> (<var>$let-redirect &lt;exp&gt; &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024let_002dredirect-107"></a></var><br> +&mdash; Operative: <b>$let-redirect</b> (<var>$let-redirect &lt;exp&gt; &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024let_002dredirect-108"></a></var><br> <blockquote><!-- TODO add xref to $let --> <p><code>&lt;bindings&gt;</code> and <code>&lt;body&gt;</code> should be as described for <code>$let</code>. @@ -242,7 +242,7 @@ parameter tree; <code>&lt;body&gt;</code> should be a list of expressions. </blockquote></div> <div class="defun"> -&mdash; Operative: <b>$let-safe</b> (<var>$let-safe &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024let_002dsafe-108"></a></var><br> +&mdash; Operative: <b>$let-safe</b> (<var>$let-safe &lt;bindings&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024let_002dsafe-109"></a></var><br> <blockquote><!-- TODO add xref to $let --> <p><code>&lt;bindings&gt;</code> and <code>&lt;body&gt;</code> should be as described for <code>$let</code>. @@ -255,7 +255,7 @@ parameter tree; <code>&lt;body&gt;</code> should be a list of expressions. </blockquote></div> <div class="defun"> -&mdash; Operative: <b>$remote-eval</b> (<var>$remote-eval &lt;exp1&gt; &lt;exp2&gt;</var>)<var><a name="index-g_t_0024remote_002deval-109"></a></var><br> +&mdash; Operative: <b>$remote-eval</b> (<var>$remote-eval &lt;exp1&gt; &lt;exp2&gt;</var>)<var><a name="index-g_t_0024remote_002deval-110"></a></var><br> <blockquote><!-- TODO add xref to tail context --> <p>Operative <code>$remote-eval</code> evaluates <code>&lt;exp2&gt;</code> in the dynamic environment, then evaluates <code>&lt;exp1&gt;</code> as a tail context in the @@ -263,7 +263,7 @@ environment that must result from the first evaluation. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>(</b><var>$bindings-environment . &lt;bindings&gt;</var>)<var><a name="index-g_t_0028-110"></a></var><br> +&mdash; Operative: <b>$bindings-&gt;environment</b> (<var>$bindings-&gt;environment . &lt;bindings&gt;</var>)<var><a name="index-g_t_0024bindings_002d_003eenvironment-111"></a></var><br> <blockquote><!-- TODO add xref to $let --> <p><code>&lt;bindings&gt;</code> should be as described for <code>$let</code>. @@ -275,7 +275,7 @@ environment that must result from the first evaluation. </blockquote></div> <div class="defun"> -&mdash; Operative: <b>$set!</b> (<var>$set! &lt;exp1&gt; &lt;formals&gt; &lt;exp2&gt;</var>)<var><a name="index-g_t_0024set_0021-111"></a></var><br> +&mdash; Operative: <b>$set!</b> (<var>$set! &lt;exp1&gt; &lt;formals&gt; &lt;exp2&gt;</var>)<var><a name="index-g_t_0024set_0021-112"></a></var><br> <blockquote><!-- TODO add xref to $define! --> <!-- TODO add xref to matching algo --> <p><code>&lt;formals&gt;</code> should be as described for the <code>$define!</code> @@ -289,7 +289,7 @@ The result returned by <code>$set!</code> is inert. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$provide!</b> (<var>$provide! &lt;symbols&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024provide_0021-112"></a></var><br> +&mdash; Operative: <b>$provide!</b> (<var>$provide! &lt;symbols&gt; . &lt;body&gt;</var>)<var><a name="index-g_t_0024provide_0021-113"></a></var><br> <blockquote><p> <code>&lt;symbols&gt;</code> must be a finite list of symbols, containing no duplicates. <code>&lt;body&gt;</code> must be a finite list. @@ -309,7 +309,7 @@ result of looking it up in <code>e</code>. The result returned by </blockquote></div> <div class="defun"> -&mdash; Operative: <b>$import!</b> (<var>$import! &lt;exp&gt; . &lt;symbols&gt;</var>)<var><a name="index-g_t_0024import_0021-113"></a></var><br> +&mdash; Operative: <b>$import!</b> (<var>$import! &lt;exp&gt; . &lt;symbols&gt;</var>)<var><a name="index-g_t_0024import_0021-114"></a></var><br> <blockquote><p> <code>&lt;symbols&gt;</code> must be a list of symbols. <p>The <code>$import!</code> operative evaluates <code>&lt;exp&gt;</code> in the dynamic diff --git a/doc/html/Equivalence.html b/doc/html/Equivalence.html @@ -32,23 +32,23 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">3 Equivalence</h2> +<h2 class="chapter">4 Equivalence</h2> -<p><a name="index-equivalence-19"></a> +<p><a name="index-equivalence-20"></a> Kernel has two general-purpose equivalence predicates (whereas R5RS Scheme has three). The two Kernel predicates correspond to the abstract notions of equivalence up to mutation (<code>equal</code>) and equivalence in the presence of mutation (<code>eq?</code>). <div class="defun"> -&mdash; Applicative: <b>eq?</b> (<var>eq? . objects</var>)<var><a name="index-eq_003f-20"></a></var><br> +&mdash; Applicative: <b>eq?</b> (<var>eq? . objects</var>)<var><a name="index-eq_003f-21"></a></var><br> <blockquote><p> Predicate <code>eq?</code> returns true iff all of <code>objects</code> are effectively the same object, even in the presence of mutation. <!-- todo maybe add more content here, specifical to klisp --> </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>equal?</b> (<var>equal? . objects</var>)<var><a name="index-equal_003f-21"></a></var><br> +&mdash; Applicative: <b>equal?</b> (<var>equal? . objects</var>)<var><a name="index-equal_003f-22"></a></var><br> <blockquote><p> Predicate <code>equal?</code> returns true iff all of <code>objects</code> &ldquo;look&rdquo; the same as long as nothing is mutated. This is a weaker predicate than <code>eq?</code>; that is, <code>equal?</code> must return true diff --git a/doc/html/Interpreter-Exit-Status.html b/doc/html/Interpreter-Exit-Status.html @@ -0,0 +1 @@ +<meta http-equiv="refresh" content="0; url=Interpreter.html#Interpreter%20Exit%20Status"> diff --git a/doc/html/Interpreter.html b/doc/html/Interpreter.html @@ -0,0 +1,177 @@ +<html lang="en"> +<head> +<title>Interpreter - klisp Reference Manual</title> +<meta http-equiv="Content-Type" content="text/html"> +<meta name="description" content="klisp Reference Manual"> +<meta name="generator" content="makeinfo 4.13"> +<link title="Top" rel="start" href="index.html#Top"> +<link rel="prev" href="Introduction.html#Introduction" title="Introduction"> +<link rel="next" href="Booleans.html#Booleans" title="Booleans"> +<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> +<meta http-equiv="Content-Style-Type" content="text/css"> +<style type="text/css"><!-- + pre.display { font-family:inherit } + pre.format { font-family:inherit } + pre.smalldisplay { font-family:inherit; font-size:smaller } + pre.smallformat { font-family:inherit; font-size:smaller } + pre.smallexample { font-size:smaller } + pre.smalllisp { font-size:smaller } + span.sc { font-variant:small-caps } + span.roman { font-family:serif; font-weight:normal; } + span.sansserif { font-family:sans-serif; font-weight:normal; } +--></style> +</head> +<body> +<div class="node"> +<a name="Interpreter"></a> +<p> +Next:&nbsp;<a rel="next" accesskey="n" href="Booleans.html#Booleans">Booleans</a>, +Previous:&nbsp;<a rel="previous" accesskey="p" href="Introduction.html#Introduction">Introduction</a>, +Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> +<hr> +</div> + +<!-- node-name, next, previous, up --> +<h2 class="chapter">2 Interpreter</h2> + +<p><a name="index-interpreter-12"></a> +This section describes the <samp><span class="command">klisp</span></samp>, a Kernel Programming Language +stand-alone interpreter. + +<h3 class="section">2.1 Invocation</h3> + +<p><samp><span class="command">klisp</span></samp> is invoked like this: +<pre class="example"> klisp [options] [script] +</pre> + <h3 class="section">2.2 Description</h3> + +<p><samp><span class="command">klisp</span></samp> is a stand-alone klisp interpreter for the Kernel +Programming Language. It loads and evaluates Kernel programs in +textual source form. <samp><span class="command">klisp</span></samp> can be used as a batch +interpreter and also interactively. The given <code>options</code> +(see <a href="Command-Line-Options.html#Command-Line-Options">Command Line Options</a>) are evaluated and then the klisp +program in file <code>script</code> is loaded and evaluated. All +evaluations mentioned, including the initialization that is described +below, take place in the same (initially) standard environment. All +values that result from these evaluation are discarded, but if the +<code>root-continuation</code> or <code>error-continuation</code> are passed a +value, the evaluation of <code>options</code> is interrupted and +<samp><span class="command">klisp</span></samp> terminates. +See <a href="Interpreter-Exit-Status.html#Interpreter-Exit-Status">Exit Status</a>, for a description of the +exit status in each case. + + <p>The string <code>script</code> together with all arguments are available as +a list of strings via the applicative <code>get-script-arguments</code>. If +these arguments contain spaces or other characters special to the +shell, then they should be quoted (but note that the quotes will be +removed by the shell). The complete command line, including the name +of the interpreter, options, the script, and its arguments are +available as a list of strings via the applicative +<code>get-interpreter-arguments</code>. + + <p>At the very beginning, before even handling the command line, +<samp><span class="command">klisp</span></samp> reads and evaluates the contents of the environment +variable <code>KLISP_INIT</code>, if it is defined. To use an init file, +just define <code>KLISP_INIT</code> to the following form: <code>(load +"/path/to/init-file")</code>. Notice that <samp><span class="command">klisp</span></samp> expects exactly one +expression in <code>KLISP_INIT</code>, if it is defined. So it is an error +to have no expressions or more than one in <code>KLISP_INIT</code>. The +same is true of the argument to the <code>-e</code> option, as both are +implemented in terms of <code>string-eval</code>. +<!-- TODO add xref to string-eval --> + + <p>In interactive mode, <samp><span class="command">klisp</span></samp> prompts the user, reads +expressions from the standard input, and evaluates them as they are +read. The default prompt is "klisp&gt; ". + + <p><a name="Command-Line-Options"></a> + +<h3 class="section">2.3 Options</h3> + +<!-- @cindex Command Line Options --> +<!-- TODO move this to an appendix --> +<p>Options start with <samp><span class="option">-</span></samp> and are described below. You can use +<samp><span class="option">--</span></samp> to signal the end of options. If no arguments are given, +then <samp><span class="option">-v</span></samp> <samp><span class="option">-i</span></samp> is assumed when the standard input is a +terminal; otherwise, <samp><span class="option">-</span></samp> is assumed. If no <var>script</var>, or +option <samp><span class="option">-e</span></samp> or <code>-l</code> is given, <samp><span class="option">-i</span></samp> is assumed. + + <dl> +<dt><samp><span class="option">-</span></samp><dd><!-- TODO implement option index @opindex - ... --> +<!-- cindex ... --> +load and execute the standard input as a file, +that is, +not interactively, +even when the standard input is a terminal. +.TP + + <br><dt><samp><span class="option">-e </span><var>expr</var></samp><dd><!-- @opindex -e ... --> +<!-- @cindex -e ... --> +evaluate expression <var>expr</var>. You need to quote <var>expr</var> if it +contains spaces, quotes, or other characters special to the shell. + + <br><dt><samp><span class="option">-i</span></samp><dd><!-- @opindex -i ... --> +<!-- @cindex -i ... --> +enter interactive mode after <var>script</var> is executed. + + <br><dt><samp><span class="option">-l </span><var>name</var></samp><dd><!-- @opindex -l ... --> +<!-- @cindex -l ... --> +evaluate <code>(load "name")</code> before <var>script</var> is executed. +Typically used to do environment initialization. + + <br><dt><samp><span class="option">-r </span><var>name</var></samp><dd><!-- @opindex -r ... --> +<!-- @cindex -r ... --> +evaluate <code>(require "name")</code> before <var>script</var> is +executed. Typically used to load libraries. + + <br><dt><samp><span class="option">-v</span></samp><dd><!-- @opindex -v ... --> +<!-- @cindex -v ... --> +show version and copyright information. + + </dl> + +<!-- TODO move this to an appendix --> + <p><a name="Interpreter-Exit-Status"></a> + +<h3 class="section">2.4 Exit Status</h3> + +<!-- @cindex Exit Status --> +<p>If the <var>script</var> or <samp><span class="file">stdin</span></samp> reach <var>EOF</var> or if there is no +<var>script</var>, <code>EXIT_SUCCESS</code> is returned. If the +<var>error-continuation</var> is passed an object during init, arguments or script +evaluation <code>EXIT_FAILURE</code> is returned. If the +<var>root-continuation</var> is passed an object, <samp><span class="command">klisp</span></samp> tries to +convert the value passed to the <var>root-continuation</var> to an exit +status as follows: + + <dl> +<dt><code>integer</code><dd>If the value is an integer it is used as exit status. + + <br><dt><code>boolean</code><dd>If the value is a boolean then <code>EXIT_SUCCESS</code> is returned for +<code>#t</code> and <code>EXIT_FAILURE</code> for <code>#f</code>. + + <br><dt><code>inert</code><dd>If the value is inert, then <code>EXIT_SUCCESS</code> is returned. + + <br><dt><code>else</code><dd>In any other case <code>EXIT_FAILURE</code> is returned. +</dl> + +<h3 class="section">2.5 Environment Variables</h3> + +<!-- @cindex Interpreter Environment Variables --> +<p>The following environment variables affect the behaviour of <samp><span class="command">klisp</span></samp> + + <dl> +<dt><samp><span class="env">KLISP_INIT</span></samp><dd><!-- TODO index for env variables --> +A Kernel expression to be evaluated before any arguments to the +interpreter. To use an init file, just define <var>KLISP_INIT</var> to the +following form <code>(load "/path/to/init-file")</code> + + <br><dt><samp><span class="env">KLISP_PATH</span></samp><dd>A colon separated list of templates for controlling the search of +required files. Each template can use the char <code>?</code> to be +replaced by the required name at run-time. + + </dl> + +<!-- *-texinfo-*- --> + </body></html> + diff --git a/doc/html/Introduction.html b/doc/html/Introduction.html @@ -6,7 +6,7 @@ <meta name="generator" content="makeinfo 4.13"> <link title="Top" rel="start" href="index.html#Top"> <link rel="prev" href="License.html#License" title="License"> -<link rel="next" href="Booleans.html#Booleans" title="Booleans"> +<link rel="next" href="Interpreter.html#Interpreter" title="Interpreter"> <link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> <meta http-equiv="Content-Style-Type" content="text/css"> <style type="text/css"><!-- @@ -25,7 +25,7 @@ <div class="node"> <a name="Introduction"></a> <p> -Next:&nbsp;<a rel="next" accesskey="n" href="Booleans.html#Booleans">Booleans</a>, +Next:&nbsp;<a rel="next" accesskey="n" href="Interpreter.html#Interpreter">Interpreter</a>, Previous:&nbsp;<a rel="previous" accesskey="p" href="License.html#License">License</a>, Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <hr> diff --git a/doc/html/Keyed-Variables.html b/doc/html/Keyed-Variables.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">12 Keyed Variables</h2> +<h2 class="chapter">13 Keyed Variables</h2> -<p><a name="index-keyed-variables-145"></a> +<p><a name="index-keyed-variables-146"></a> A keyed variable is a device that associates a non-symbolic key (in the form of an accessor applicative) with a value depending on the context in which lookup occurs. Kernel provides two types of keyed @@ -42,16 +42,16 @@ variables: dynamic &amp; static. Keyed Dynamic Variables use the dynamic extent as context and Keyed Static Variables use the dynamic environment. -<h3 class="section">12.1 Keyed Dynamic Variables</h3> +<h3 class="section">13.1 Keyed Dynamic Variables</h3> -<p><a name="index-keyed-dynamic-variables-146"></a><!-- add cf xref static --> +<p><a name="index-keyed-dynamic-variables-147"></a><!-- add cf xref static --> <!-- TODO add xref to dynamic extent --> A keyed dynamic variable is a device that associates a non-symbolic key (in the form of an accessor applicative) with a value depending on the dynamic extent in which lookup occurs. <div class="defun"> -&mdash; Applicative: <b>make-keyed-dynamic-variable</b> (<var>make-keyed-dynamic-variable</var>)<var><a name="index-make_002dkeyed_002ddynamic_002dvariable-147"></a></var><br> +&mdash; Applicative: <b>make-keyed-dynamic-variable</b> (<var>make-keyed-dynamic-variable</var>)<var><a name="index-make_002dkeyed_002ddynamic_002dvariable-148"></a></var><br> <blockquote><p> Returns a list of the form <code>(b a)</code>, where <code>b</code> and <code>a</code> are applicatives, as follows. Each call to <code>make-keyed-dynamic-variable</code> returns different <code>b</code> and @@ -72,15 +72,15 @@ call to <code>a</code> is not within the dynamic extent of any call to </ul> </p></blockquote></div> -<h3 class="section">12.2 Keyed Static Variables</h3> +<h3 class="section">13.2 Keyed Static Variables</h3> -<p><a name="index-keyed-static-variables-148"></a> A keyed static variable is a device that binds data in an +<p><a name="index-keyed-static-variables-149"></a> A keyed static variable is a device that binds data in an environment by a non-symbolic key, where the key is an accessor applicative. <!-- add cf xref dynamic --> <div class="defun"> -&mdash; Applicative: <b>make-keyed-static-variable</b> (<var>make-keyed-static-variable</var>)<var><a name="index-make_002dkeyed_002dstatic_002dvariable-149"></a></var><br> +&mdash; Applicative: <b>make-keyed-static-variable</b> (<var>make-keyed-static-variable</var>)<var><a name="index-make_002dkeyed_002dstatic_002dvariable-150"></a></var><br> <blockquote><p> Returns a list of the form <code>(b a)</code>, where <code>b</code> and <code>a</code> are applicatives, as follows. Each call to <code>make-keyed-static-variable</code> returns different <code>b</code> and <code>a</code>. diff --git a/doc/html/Numbers.html b/doc/html/Numbers.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">13 Numbers</h2> +<h2 class="chapter">14 Numbers</h2> -<p><a name="index-numbers-150"></a> +<p><a name="index-numbers-151"></a> All numbers are immutable, and <code>equal?</code> iff <code>eq?</code>. The number type is encapsulated. @@ -90,74 +90,74 @@ narrow-arithmetic keyed dynamic variable. point. No bounding or robustness info is kept. <div class="defun"> -&mdash; Applicative: <b>number?</b> (<var>number? . objects</var>)<var><a name="index-number_003f-151"></a></var><br> +&mdash; Applicative: <b>number?</b> (<var>number? . objects</var>)<var><a name="index-number_003f-152"></a></var><br> <blockquote><p> The primitive type predicate for type number. <code>number?</code> returns true iff all the objects in <code>objects</code> are of type number. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>integer?</b> (<var>integer? . objects</var>)<var><a name="index-integer_003f-152"></a></var><br> +&mdash; Applicative: <b>integer?</b> (<var>integer? . objects</var>)<var><a name="index-integer_003f-153"></a></var><br> <blockquote><p> The primitive type predicate for number subtype integer. <code>integer?</code> returns true iff all the objects in <code>objects</code> are of type integer. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>rational?</b> (<var>rational? . objects</var>)<var><a name="index-rational_003f-153"></a></var><br> +&mdash; Applicative: <b>rational?</b> (<var>rational? . objects</var>)<var><a name="index-rational_003f-154"></a></var><br> <blockquote><p> The primitive type predicate for number subtype rational. <code>rational?</code> returns true iff all the objects in <code>objects</code> are of type rational. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>real?</b> (<var>real? . objects</var>)<var><a name="index-real_003f-154"></a></var><br> +&mdash; Applicative: <b>real?</b> (<var>real? . objects</var>)<var><a name="index-real_003f-155"></a></var><br> <blockquote><p> The primitive type predicate for number subtype real. <code>real?</code> returns true iff all the objects in <code>objects</code> are of type real. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>finite?</b> (<var>finite? . numbers</var>)<var><a name="index-finite_003f-155"></a></var><br> +&mdash; Applicative: <b>finite?</b> (<var>finite? . numbers</var>)<var><a name="index-finite_003f-156"></a></var><br> <blockquote><p> Predicate <code>finite?</code> returns true iff all the numbers in <code>numbers</code> are finite. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>exact?</b> (<var>exact? . numbers</var>)<var><a name="index-exact_003f-156"></a></var><br> +&mdash; Applicative: <b>exact?</b> (<var>exact? . numbers</var>)<var><a name="index-exact_003f-157"></a></var><br> <blockquote><p> Predicate <code>exact?</code> returns true iff all the numbers in <code>numbers</code> are exact. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>inexact?</b> (<var>inexact? . numbers</var>)<var><a name="index-inexact_003f-157"></a></var><br> +&mdash; Applicative: <b>inexact?</b> (<var>inexact? . numbers</var>)<var><a name="index-inexact_003f-158"></a></var><br> <blockquote><p> Predicate <code>inexact?</code> returns true iff all the numbers in <code>numbers</code> are inexact. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>robust?</b> (<var>robust? . numbers</var>)<var><a name="index-robust_003f-158"></a></var><br> +&mdash; Applicative: <b>robust?</b> (<var>robust? . numbers</var>)<var><a name="index-robust_003f-159"></a></var><br> <blockquote><p> Predicate <code>robust?</code> returns true iff all the numbers in <code>numbers</code> are robust. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>undefined?</b> (<var>undefined? . numbers</var>)<var><a name="index-undefined_003f-159"></a></var><br> +&mdash; Applicative: <b>undefined?</b> (<var>undefined? . numbers</var>)<var><a name="index-undefined_003f-160"></a></var><br> <blockquote><p> Predicate <code>undefined?</code> returns true iff all the numbers in <code>numbers</code> are undefined. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>=?</b> (<var>=? . numbers</var>)<var><a name="index-g_t_003d_003f-160"></a></var><br> +&mdash; Applicative: <b>=?</b> (<var>=? . numbers</var>)<var><a name="index-g_t_003d_003f-161"></a></var><br> <blockquote><p> Applicative <code>=?</code> is a predicate that returns true iff all its arguments are numerically equal to each other. If any of its arguments has no primary value, an error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>&lt;?</b> (<var>&lt;? . reals</var>)<var><a name="index-g_t_003c_003f-161"></a></var><br> -&mdash; Applicative: <b>&lt;=?</b> (<var>&lt;=? . reals</var>)<var><a name="index-g_t_003c_003d_003f-162"></a></var><br> -&mdash; Applicative: <b>&gt;?</b> (<var>&gt;? . reals</var>)<var><a name="index-g_t_003e_003f-163"></a></var><br> -&mdash; Applicative: <b>&gt;=?</b> (<var>&gt;=? . reals</var>)<var><a name="index-g_t_003e_003d_003f-164"></a></var><br> +&mdash; Applicative: <b>&lt;?</b> (<var>&lt;? . reals</var>)<var><a name="index-g_t_003c_003f-162"></a></var><br> +&mdash; Applicative: <b>&lt;=?</b> (<var>&lt;=? . reals</var>)<var><a name="index-g_t_003c_003d_003f-163"></a></var><br> +&mdash; Applicative: <b>&gt;?</b> (<var>&gt;? . reals</var>)<var><a name="index-g_t_003e_003f-164"></a></var><br> +&mdash; Applicative: <b>&gt;=?</b> (<var>&gt;=? . reals</var>)<var><a name="index-g_t_003e_003d_003f-165"></a></var><br> <blockquote><p> Each of these applicatives is a predicate that returns true iff every two consecutive elements of <code>reals</code> have primary values in the order indicated by the name of the applicative. If any element of @@ -165,7 +165,7 @@ the order indicated by the name of the applicative. If any element of </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>+</b> (<var>+ . numbers</var>)<var><a name="index-g_t_002b-165"></a></var><br> +&mdash; Applicative: <b>+</b> (<var>+ . numbers</var>)<var><a name="index-g_t_002b-166"></a></var><br> <blockquote><p> Applicative <code>+</code> returns the sum of the elements of numbers. If numbers is empty, the sum of its elements is exact zero. If a positive infinity is added to a negative infinity, the result has no @@ -179,7 +179,7 @@ the cycle has no primary value. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>*</b> (<var>* . numbers</var>)<var><a name="index-g_t_002a-166"></a></var><br> +&mdash; Applicative: <b>*</b> (<var>* . numbers</var>)<var><a name="index-g_t_002a-167"></a></var><br> <blockquote><p> Applicative <code>*</code> returns the product of the elements of numbers. If numbers is empty, the product of its elements is exact one. If an infinity is multiplied by zero, the result has no primary value. If @@ -196,7 +196,7 @@ positive real, the product of the cycle has no primary value. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>-</b> (<var>- number . numbers</var>)<var><a name="index-g_t_002d-167"></a></var><br> +&mdash; Applicative: <b>-</b> (<var>- number . numbers</var>)<var><a name="index-g_t_002d-168"></a></var><br> <blockquote><p> <code>numbers</code> should be a nonempty list of numbers. <p>Applicative <code>-</code> returns the sum of <code>number</code> with the @@ -204,7 +204,7 @@ negation of the sum of <code>numbers</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>zero?</b> (<var>zero? . numbers</var>)<var><a name="index-zero_003f-168"></a></var><br> +&mdash; Applicative: <b>zero?</b> (<var>zero? . numbers</var>)<var><a name="index-zero_003f-169"></a></var><br> <blockquote><p> Applicative <code>zero?</code> is a predicate that returns true iff every element of <code>numbers</code> is zero. For this purpose, a real number is zero if its primary value is zero. If any element of numbers has no @@ -212,9 +212,9 @@ primary value an error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>div</b> (<var>div real1 real2</var>)<var><a name="index-div-169"></a></var><br> -&mdash; Applicative: <b>mod</b> (<var>mod real1 real2</var>)<var><a name="index-mod-170"></a></var><br> -&mdash; Applicative: <b>div-and-mod</b> (<var>div-and-mod real1 real2</var>)<var><a name="index-div_002dand_002dmod-171"></a></var><br> +&mdash; Applicative: <b>div</b> (<var>div real1 real2</var>)<var><a name="index-div-170"></a></var><br> +&mdash; Applicative: <b>mod</b> (<var>mod real1 real2</var>)<var><a name="index-mod-171"></a></var><br> +&mdash; Applicative: <b>div-and-mod</b> (<var>div-and-mod real1 real2</var>)<var><a name="index-div_002dand_002dmod-172"></a></var><br> <blockquote><p> For all three applicatives, if <code>real1</code> is infinite or <code>real2</code> is zero, an error is signaled. @@ -229,9 +229,9 @@ whose first element is <code>n</code> and whose second element is </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>div0</b> (<var>div0 real1 real2</var>)<var><a name="index-div0-172"></a></var><br> -&mdash; Applicative: <b>mod0</b> (<var>mod0 real1 real2</var>)<var><a name="index-mod0-173"></a></var><br> -&mdash; Applicative: <b>div0-and-mod0</b> (<var>div0-and-mod0 real1 real2</var>)<var><a name="index-div0_002dand_002dmod0-174"></a></var><br> +&mdash; Applicative: <b>div0</b> (<var>div0 real1 real2</var>)<var><a name="index-div0-173"></a></var><br> +&mdash; Applicative: <b>mod0</b> (<var>mod0 real1 real2</var>)<var><a name="index-mod0-174"></a></var><br> +&mdash; Applicative: <b>div0-and-mod0</b> (<var>div0-and-mod0 real1 real2</var>)<var><a name="index-div0_002dand_002dmod0-175"></a></var><br> <blockquote><p> For all three applicatives, if <code>real1</code> is infinite or <code>real2</code> is zero, an error is signaled. @@ -246,8 +246,8 @@ is <code>real1 - (real2 * n)</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>positive?</b> (<var>positive? . reals</var>)<var><a name="index-positive_003f-175"></a></var><br> -&mdash; Applicative: <b>negative?</b> (<var>negative? . reals</var>)<var><a name="index-negative_003f-176"></a></var><br> +&mdash; Applicative: <b>positive?</b> (<var>positive? . reals</var>)<var><a name="index-positive_003f-176"></a></var><br> +&mdash; Applicative: <b>negative?</b> (<var>negative? . reals</var>)<var><a name="index-negative_003f-177"></a></var><br> <blockquote><p> Applicative <code>positive?</code> is a predicate that returns true iff every element of <code>reals</code> is greater than zero. Applicative <code>negative?</code> is a predicate that returns true iff every element of @@ -256,8 +256,8 @@ has no primary value an error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>odd?</b> (<var>odd? . integers</var>)<var><a name="index-odd_003f-177"></a></var><br> -&mdash; Applicative: <b>even?</b> (<var>even? . integers</var>)<var><a name="index-even_003f-178"></a></var><br> +&mdash; Applicative: <b>odd?</b> (<var>odd? . integers</var>)<var><a name="index-odd_003f-178"></a></var><br> +&mdash; Applicative: <b>even?</b> (<var>even? . integers</var>)<var><a name="index-even_003f-179"></a></var><br> <blockquote><p> Applicative <code>odd?</code> is a predicate that returns true iff every element of <code>integers</code> is odd. Applicative <code>even?</code> is a predicate that returns true iff every element of <code>integers</code> is @@ -266,7 +266,7 @@ error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>(</b><var>abs real</var>)<var><a name="index-g_t_0028-179"></a></var><br> +&mdash; Applicative: <b>abs</b> (<var>abs real</var>)<var><a name="index-abs-180"></a></var><br> <blockquote><p> Applicative <code>abs</code> returns the nonnegative real number with the same magnitude as <code>real</code>; that is, if <code>real</code> is nonnegative it returns <code>real</code>, otherwise it returns the negation of @@ -274,8 +274,8 @@ it returns <code>real</code>, otherwise it returns the negation of </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>max</b> (<var>max . reals</var>)<var><a name="index-max-180"></a></var><br> -&mdash; Applicative: <b>min</b> (<var>min . reals</var>)<var><a name="index-min-181"></a></var><br> +&mdash; Applicative: <b>max</b> (<var>max . reals</var>)<var><a name="index-max-181"></a></var><br> +&mdash; Applicative: <b>min</b> (<var>min . reals</var>)<var><a name="index-min-182"></a></var><br> <blockquote><p> If <code>reals</code> is nil, applicative <code>max</code> returns exact negative infinity, and applicative <code>min</code> returns exact positive infinity. If <code>reals</code> is non-nil, applicative <code>max</code> returns @@ -284,8 +284,8 @@ the smallest number in <code>reals</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>lcm</b> (<var>lcm . impints</var>)<var><a name="index-lcm-182"></a></var><br> -&mdash; Applicative: <b>gcd</b> (<var>gcd . impints</var>)<var><a name="index-gcd-183"></a></var><br> +&mdash; Applicative: <b>lcm</b> (<var>lcm . impints</var>)<var><a name="index-lcm-183"></a></var><br> +&mdash; Applicative: <b>gcd</b> (<var>gcd . impints</var>)<var><a name="index-gcd-184"></a></var><br> <blockquote><p> <code>impints</code> should be a list of improper integers, that is, real numbers each of which is either an integer or an infinity. @@ -312,8 +312,8 @@ deleted. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-real-internal-bounds</b> (<var>get-real-internal-bounds real</var>)<var><a name="index-get_002dreal_002dinternal_002dbounds-184"></a></var><br> -&mdash; Applicative: <b>get-real-exact-bounds</b> (<var>get-real-exact-bounds real</var>)<var><a name="index-get_002dreal_002dexact_002dbounds-185"></a></var><br> +&mdash; Applicative: <b>get-real-internal-bounds</b> (<var>get-real-internal-bounds real</var>)<var><a name="index-get_002dreal_002dinternal_002dbounds-185"></a></var><br> +&mdash; Applicative: <b>get-real-exact-bounds</b> (<var>get-real-exact-bounds real</var>)<var><a name="index-get_002dreal_002dexact_002dbounds-186"></a></var><br> <blockquote><p> Applicative <code>get-real-internal-bounds</code> returns a freshly allocated list of reals <code>(x1 x2)</code>, where the primary value of <code>x1</code> is the lower bound of <code>real</code>, using the same internal @@ -333,8 +333,8 @@ the upper bound of <code>real</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-real-internal-primary</b> (<var>get-real-internal-primary real</var>)<var><a name="index-get_002dreal_002dinternal_002dprimary-186"></a></var><br> -&mdash; Applicative: <b>get-real-exact-primary</b> (<var>get-real-exact-primary real</var>)<var><a name="index-get_002dreal_002dexact_002dprimary-187"></a></var><br> +&mdash; Applicative: <b>get-real-internal-primary</b> (<var>get-real-internal-primary real</var>)<var><a name="index-get_002dreal_002dinternal_002dprimary-187"></a></var><br> +&mdash; Applicative: <b>get-real-exact-primary</b> (<var>get-real-exact-primary real</var>)<var><a name="index-get_002dreal_002dexact_002dprimary-188"></a></var><br> <blockquote><p> If <code>real</code> is exact, both applicatives return <code>real</code>. If <code>real</code> has no primary value, both applicatives signal an error. @@ -356,7 +356,7 @@ support any exact <code>real</code> that reasonably approximates </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>make-inexact</b> (<var>make-inexact real1 real2 real3</var>)<var><a name="index-make_002dinexact-188"></a></var><br> +&mdash; Applicative: <b>make-inexact</b> (<var>make-inexact real1 real2 real3</var>)<var><a name="index-make_002dinexact-189"></a></var><br> <blockquote><p> Applicative <code>make-inexact</code> returns an inexact real number, as follows. If <code>real2</code> is inexact, the result has the same primary value as <code>real2</code>; and if <code>real2</code> has no primary value, the @@ -374,8 +374,8 @@ no less than the upper bound of <code>real3</code>, the primary value of </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>real-&gt;inexact</b> (<var>real-&gt;inexact real</var>)<var><a name="index-real_002d_003einexact-189"></a></var><br> -&mdash; Applicative: <b>real-&gt;exact</b> (<var>real-&gt;exact real</var>)<var><a name="index-real_002d_003eexact-190"></a></var><br> +&mdash; Applicative: <b>real-&gt;inexact</b> (<var>real-&gt;inexact real</var>)<var><a name="index-real_002d_003einexact-190"></a></var><br> +&mdash; Applicative: <b>real-&gt;exact</b> (<var>real-&gt;exact real</var>)<var><a name="index-real_002d_003eexact-191"></a></var><br> <blockquote><!-- TODO add xref to get-real-exact-primary --> <p>Applicative <code>real-&gt;exact</code> behaves just as <code>get-real-exact-primary</code>. @@ -391,8 +391,8 @@ and its bounds are only required to contain its primary value and </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>with-strict-arithmetic</b> (<var>with-strict-arithmetic boolean combiner</var>)<var><a name="index-with_002dstrict_002darithmetic-191"></a></var><br> -&mdash; Applicative: <b>get-string-arithmetic</b> (<var>get-strict-arithmetic?</var>)<var><a name="index-get_002dstring_002darithmetic-192"></a></var><br> +&mdash; Applicative: <b>with-strict-arithmetic</b> (<var>with-strict-arithmetic boolean combiner</var>)<var><a name="index-with_002dstrict_002darithmetic-192"></a></var><br> +&mdash; Applicative: <b>get-string-arithmetic</b> (<var>get-strict-arithmetic?</var>)<var><a name="index-get_002dstring_002darithmetic-193"></a></var><br> <blockquote><!-- TODO add xref to dynamic keys and under/over flow, no prim value --> <p>These applicatives are the binder and accessor of the <code>strict-arithmetic</code> keyed dynamic variable. When this keyed @@ -402,7 +402,7 @@ and over- and underflows. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>/</b> (<var>/ number . numbers</var>)<var><a name="index-g_t_002f-193"></a></var><br> +&mdash; Applicative: <b>/</b> (<var>/ number . numbers</var>)<var><a name="index-g_t_002f-194"></a></var><br> <blockquote><p> <code>numbers</code> should be a nonempty list of numbers. <p>Applicative <code>/</code> returns <code>number</code> divided by the product of @@ -412,8 +412,8 @@ infinite, an error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>numerator</b> (<var>numerator rational</var>)<var><a name="index-numerator-194"></a></var><br> -&mdash; Applicative: <b>denominator</b> (<var>denominator rational</var>)<var><a name="index-denominator-195"></a></var><br> +&mdash; Applicative: <b>numerator</b> (<var>numerator rational</var>)<var><a name="index-numerator-195"></a></var><br> +&mdash; Applicative: <b>denominator</b> (<var>denominator rational</var>)<var><a name="index-denominator-196"></a></var><br> <blockquote><p> These applicatives return the numerator and denominator of <code>rational</code>, in least terms (i.e., chosen for the least positive denominator). Note that if <code>rational</code> is inexact, and either of @@ -424,10 +424,10 @@ both signs). </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>floor</b> (<var>floor real</var>)<var><a name="index-floor-196"></a></var><br> -&mdash; Applicative: <b>ceiling</b> (<var>ceiling real</var>)<var><a name="index-ceiling-197"></a></var><br> -&mdash; Applicative: <b>truncate</b> (<var>truncate real</var>)<var><a name="index-truncate-198"></a></var><br> -&mdash; Applicative: <b>round</b> (<var>round real</var>)<var><a name="index-round-199"></a></var><br> +&mdash; Applicative: <b>floor</b> (<var>floor real</var>)<var><a name="index-floor-197"></a></var><br> +&mdash; Applicative: <b>ceiling</b> (<var>ceiling real</var>)<var><a name="index-ceiling-198"></a></var><br> +&mdash; Applicative: <b>truncate</b> (<var>truncate real</var>)<var><a name="index-truncate-199"></a></var><br> +&mdash; Applicative: <b>round</b> (<var>round real</var>)<var><a name="index-round-200"></a></var><br> <blockquote><p> Applicative <code>floor</code> returns the largest integer not greater than <code>real</code>. @@ -443,8 +443,8 @@ rounding to even when <code>real</code> is halfway between two integers. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>rationalize</b> (<var>rationalize real1 real2</var>)<var><a name="index-rationalize-200"></a></var><br> -&mdash; Applicative: <b>simplest-rational</b> (<var>simplest-rational real1 real2</var>)<var><a name="index-simplest_002drational-201"></a></var><br> +&mdash; Applicative: <b>rationalize</b> (<var>rationalize real1 real2</var>)<var><a name="index-rationalize-201"></a></var><br> +&mdash; Applicative: <b>simplest-rational</b> (<var>simplest-rational real1 real2</var>)<var><a name="index-simplest_002drational-202"></a></var><br> <blockquote><p> A rational number <code>r1</code> is simpler than another rational <code>r2</code> if <code>r1 = p1 / q1</code> and <code>r2 = p2 / q2</code>, both in lowest terms, and <code>|p1| &lt;= |p2|</code> and <code>|q1| &lt;= |q2|</code>. Thus @@ -484,28 +484,28 @@ primary values of the arguments; but the result is an approximation of </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>exp</b> (<var>exp number</var>)<var><a name="index-exp-202"></a></var><br> -&mdash; Applicative: <b>log</b> (<var>log number</var>)<var><a name="index-log-203"></a></var><br> +&mdash; Applicative: <b>exp</b> (<var>exp number</var>)<var><a name="index-exp-203"></a></var><br> +&mdash; Applicative: <b>log</b> (<var>log number</var>)<var><a name="index-log-204"></a></var><br> <blockquote><p>TODO </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>sin</b> (<var>sin number</var>)<var><a name="index-sin-204"></a></var><br> -&mdash; Applicative: <b>cos</b> (<var>cos number</var>)<var><a name="index-cos-205"></a></var><br> -&mdash; Applicative: <b>tan</b> (<var>tan number</var>)<var><a name="index-tan-206"></a></var><br> +&mdash; Applicative: <b>sin</b> (<var>sin number</var>)<var><a name="index-sin-205"></a></var><br> +&mdash; Applicative: <b>cos</b> (<var>cos number</var>)<var><a name="index-cos-206"></a></var><br> +&mdash; Applicative: <b>tan</b> (<var>tan number</var>)<var><a name="index-tan-207"></a></var><br> <blockquote><p>TODO </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>asin</b> (<var>asin number</var>)<var><a name="index-asin-207"></a></var><br> -&mdash; Applicative: <b>acos</b> (<var>acos number</var>)<var><a name="index-acos-208"></a></var><br> -&mdash; Applicative: <b>atan</b> (<var>atan number1 </var>[<var>number2</var>])<var><a name="index-atan-209"></a></var><br> +&mdash; Applicative: <b>asin</b> (<var>asin number</var>)<var><a name="index-asin-208"></a></var><br> +&mdash; Applicative: <b>acos</b> (<var>acos number</var>)<var><a name="index-acos-209"></a></var><br> +&mdash; Applicative: <b>atan</b> (<var>atan number1 </var>[<var>number2</var>])<var><a name="index-atan-210"></a></var><br> <blockquote><p>TODO </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>sqrt</b> (<var>sqrt number</var>)<var><a name="index-sqrt-210"></a></var><br> -&mdash; Applicative: <b>expt</b> (<var>expt number1 number2</var>)<var><a name="index-expt-211"></a></var><br> +&mdash; Applicative: <b>sqrt</b> (<var>sqrt number</var>)<var><a name="index-sqrt-211"></a></var><br> +&mdash; Applicative: <b>expt</b> (<var>expt number1 number2</var>)<var><a name="index-expt-212"></a></var><br> <blockquote><p>TODO </p></blockquote></div> diff --git a/doc/html/Pairs-and-lists.html b/doc/html/Pairs-and-lists.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">6 Pairs and lists</h2> +<h2 class="chapter">7 Pairs and lists</h2> -<p><a name="index-pairs-33"></a><a name="index-nil-34"></a><a name="index-empty-list-35"></a><a name="index-lists-36"></a> +<p><a name="index-pairs-34"></a><a name="index-nil-35"></a><a name="index-empty-list-36"></a><a name="index-lists-37"></a> A pair is an object that refers to two other objects, called its car and cdr. The Kernel data type pair is encapsulated. @@ -59,19 +59,19 @@ representation <code>(1 . (2 . (3 . ())))</code> would be output using, modulo whitespace, external representation <code>(1 2 3)</code>. <div class="defun"> -&mdash; Applicative: <b>pair?</b> (<var>pair? . objects</var>)<var><a name="index-pair_003f-37"></a></var><br> +&mdash; Applicative: <b>pair?</b> (<var>pair? . objects</var>)<var><a name="index-pair_003f-38"></a></var><br> <blockquote><p> The primitive type predicate for type pair. <code>pair?</code> returns true iff all the objects in <code>objects</code> are of type pair. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>null?</b> (<var>null? . objects</var>)<var><a name="index-null_003f-38"></a></var><br> +&mdash; Applicative: <b>null?</b> (<var>null? . objects</var>)<var><a name="index-null_003f-39"></a></var><br> <blockquote><p> The primitive type predicate for type null. <code>null?</code> returns true iff all the objects in <code>objects</code> are of type null. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>cons</b> (<var>cons object1 object2</var>)<var><a name="index-cons-39"></a></var><br> +&mdash; Applicative: <b>cons</b> (<var>cons object1 object2</var>)<var><a name="index-cons-40"></a></var><br> <blockquote><p> A new mutable pair object is constructed and returned, whose car and cdr referents are respectively <code>object1</code> and <code>object2</code>. No two objects returned by different calls to cons are <code>eq?</code> to each @@ -79,8 +79,8 @@ other. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>set-car!</b> (<var>set-car! pair object</var>)<var><a name="index-set_002dcar_0021-40"></a></var><br> -&mdash; Applicative: <b>set-cdr!</b> (<var>set-cdr! pair object</var>)<var><a name="index-set_002dcdr_0021-41"></a></var><br> +&mdash; Applicative: <b>set-car!</b> (<var>set-car! pair object</var>)<var><a name="index-set_002dcar_0021-41"></a></var><br> +&mdash; Applicative: <b>set-cdr!</b> (<var>set-cdr! pair object</var>)<var><a name="index-set_002dcdr_0021-42"></a></var><br> <blockquote><p> <code>pair</code> should be a mutable pair. <p>These applicatives set the referent of, respectively, the car @@ -89,7 +89,7 @@ result of the expression is inert. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>copy-es-immutable!</b> (<var>copy-es-immutable object</var>)<var><a name="index-copy_002des_002dimmutable_0021-42"></a></var><br> +&mdash; Applicative: <b>copy-es-immutable!</b> (<var>copy-es-immutable object</var>)<var><a name="index-copy_002des_002dimmutable_0021-43"></a></var><br> <blockquote><p> The short description of this applicative is that it returns an object <code>equal?</code> to <code>object</code> with an immutable evaluation structure. The &ldquo;-es-&rdquo; in the name is short for &ldquo;evaluation structure&rdquo;. @@ -115,7 +115,7 @@ that behaviour should not be depended upon. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>list</b> (<var>list . objects</var>)<var><a name="index-list-43"></a></var><br> +&mdash; Applicative: <b>list</b> (<var>list . objects</var>)<var><a name="index-list-44"></a></var><br> <blockquote><p>The <code>list</code> applicative returns <code>objects</code>. <p>The underlying operative of <code>list</code> returns its undifferentiated @@ -123,7 +123,7 @@ operand tree, regardless of whether that tree is or is not a list. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>list*</b> (<var>list* . objects</var>)<var><a name="index-list_002a-44"></a></var><br> +&mdash; Applicative: <b>list*</b> (<var>list* . objects</var>)<var><a name="index-list_002a-45"></a></var><br> <blockquote><p><code>objects</code> should be a finite nonempty list of arguments. <p>The following equivalences hold: @@ -133,40 +133,40 @@ operand tree, regardless of whether that tree is or is not a list. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>car</b> (<var>car pair</var>)<var><a name="index-car-45"></a></var><br> -&mdash; Applicative: <b>cdr</b> (<var>cdr pair</var>)<var><a name="index-cdr-46"></a></var><br> +&mdash; Applicative: <b>car</b> (<var>car pair</var>)<var><a name="index-car-46"></a></var><br> +&mdash; Applicative: <b>cdr</b> (<var>cdr pair</var>)<var><a name="index-cdr-47"></a></var><br> <blockquote><p>These applicatives return, respectively, the car and cdr of <code>pair</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>caar</b> (<var>caar pair</var>)<var><a name="index-caar-47"></a></var><br> -&mdash; Applicative: <b>cadr</b> (<var>cadr pair</var>)<var><a name="index-cadr-48"></a></var><br> -&mdash; Applicative: <b>cdar</b> (<var>cdar pair</var>)<var><a name="index-cdar-49"></a></var><br> -&mdash; Applicative: <b>cddr</b> (<var>cddr pair</var>)<var><a name="index-cddr-50"></a></var><br> -&mdash; Applicative: <b>caaar</b> (<var>caaar pair</var>)<var><a name="index-caaar-51"></a></var><br> -&mdash; Applicative: <b>caadr</b> (<var>caadr pair</var>)<var><a name="index-caadr-52"></a></var><br> -&mdash; Applicative: <b>cadar</b> (<var>cadar pair</var>)<var><a name="index-cadar-53"></a></var><br> -&mdash; Applicative: <b>caddr</b> (<var>caddr pair</var>)<var><a name="index-caddr-54"></a></var><br> -&mdash; Applicative: <b>cdaar</b> (<var>cdaar pair</var>)<var><a name="index-cdaar-55"></a></var><br> -&mdash; Applicative: <b>cdadr</b> (<var>cdadr pair</var>)<var><a name="index-cdadr-56"></a></var><br> -&mdash; Applicative: <b>cddar</b> (<var>cddar pair</var>)<var><a name="index-cddar-57"></a></var><br> -&mdash; Applicative: <b>cdddr</b> (<var>cdddr pair</var>)<var><a name="index-cdddr-58"></a></var><br> -&mdash; Applicative: <b>caaaar</b> (<var>caaaar pair</var>)<var><a name="index-caaaar-59"></a></var><br> -&mdash; Applicative: <b>caaadr</b> (<var>caaadr pair</var>)<var><a name="index-caaadr-60"></a></var><br> -&mdash; Applicative: <b>caadar</b> (<var>caadar pair</var>)<var><a name="index-caadar-61"></a></var><br> -&mdash; Applicative: <b>caaddr</b> (<var>caaddr pair</var>)<var><a name="index-caaddr-62"></a></var><br> -&mdash; Applicative: <b>cadaar</b> (<var>cadaar pair</var>)<var><a name="index-cadaar-63"></a></var><br> -&mdash; Applicative: <b>cadadr</b> (<var>cadadr pair</var>)<var><a name="index-cadadr-64"></a></var><br> -&mdash; Applicative: <b>caddar</b> (<var>caddar pair</var>)<var><a name="index-caddar-65"></a></var><br> -&mdash; Applicative: <b>cadddr</b> (<var>cadddr pair</var>)<var><a name="index-cadddr-66"></a></var><br> -&mdash; Applicative: <b>cdaaar</b> (<var>cdaaar pair</var>)<var><a name="index-cdaaar-67"></a></var><br> -&mdash; Applicative: <b>cdaadr</b> (<var>cdaadr pair</var>)<var><a name="index-cdaadr-68"></a></var><br> -&mdash; Applicative: <b>cdadar</b> (<var>cdadar pair</var>)<var><a name="index-cdadar-69"></a></var><br> -&mdash; Applicative: <b>cdaddr</b> (<var>cdaddr pair</var>)<var><a name="index-cdaddr-70"></a></var><br> -&mdash; Applicative: <b>cddaar</b> (<var>cddaar pair</var>)<var><a name="index-cddaar-71"></a></var><br> -&mdash; Applicative: <b>cddadr</b> (<var>cddadr pair</var>)<var><a name="index-cddadr-72"></a></var><br> -&mdash; Applicative: <b>cdddar</b> (<var>cdddar pair</var>)<var><a name="index-cdddar-73"></a></var><br> -&mdash; Applicative: <b>cddddr</b> (<var>cddddr pair</var>)<var><a name="index-cddddr-74"></a></var><br> +&mdash; Applicative: <b>caar</b> (<var>caar pair</var>)<var><a name="index-caar-48"></a></var><br> +&mdash; Applicative: <b>cadr</b> (<var>cadr pair</var>)<var><a name="index-cadr-49"></a></var><br> +&mdash; Applicative: <b>cdar</b> (<var>cdar pair</var>)<var><a name="index-cdar-50"></a></var><br> +&mdash; Applicative: <b>cddr</b> (<var>cddr pair</var>)<var><a name="index-cddr-51"></a></var><br> +&mdash; Applicative: <b>caaar</b> (<var>caaar pair</var>)<var><a name="index-caaar-52"></a></var><br> +&mdash; Applicative: <b>caadr</b> (<var>caadr pair</var>)<var><a name="index-caadr-53"></a></var><br> +&mdash; Applicative: <b>cadar</b> (<var>cadar pair</var>)<var><a name="index-cadar-54"></a></var><br> +&mdash; Applicative: <b>caddr</b> (<var>caddr pair</var>)<var><a name="index-caddr-55"></a></var><br> +&mdash; Applicative: <b>cdaar</b> (<var>cdaar pair</var>)<var><a name="index-cdaar-56"></a></var><br> +&mdash; Applicative: <b>cdadr</b> (<var>cdadr pair</var>)<var><a name="index-cdadr-57"></a></var><br> +&mdash; Applicative: <b>cddar</b> (<var>cddar pair</var>)<var><a name="index-cddar-58"></a></var><br> +&mdash; Applicative: <b>cdddr</b> (<var>cdddr pair</var>)<var><a name="index-cdddr-59"></a></var><br> +&mdash; Applicative: <b>caaaar</b> (<var>caaaar pair</var>)<var><a name="index-caaaar-60"></a></var><br> +&mdash; Applicative: <b>caaadr</b> (<var>caaadr pair</var>)<var><a name="index-caaadr-61"></a></var><br> +&mdash; Applicative: <b>caadar</b> (<var>caadar pair</var>)<var><a name="index-caadar-62"></a></var><br> +&mdash; Applicative: <b>caaddr</b> (<var>caaddr pair</var>)<var><a name="index-caaddr-63"></a></var><br> +&mdash; Applicative: <b>cadaar</b> (<var>cadaar pair</var>)<var><a name="index-cadaar-64"></a></var><br> +&mdash; Applicative: <b>cadadr</b> (<var>cadadr pair</var>)<var><a name="index-cadadr-65"></a></var><br> +&mdash; Applicative: <b>caddar</b> (<var>caddar pair</var>)<var><a name="index-caddar-66"></a></var><br> +&mdash; Applicative: <b>cadddr</b> (<var>cadddr pair</var>)<var><a name="index-cadddr-67"></a></var><br> +&mdash; Applicative: <b>cdaaar</b> (<var>cdaaar pair</var>)<var><a name="index-cdaaar-68"></a></var><br> +&mdash; Applicative: <b>cdaadr</b> (<var>cdaadr pair</var>)<var><a name="index-cdaadr-69"></a></var><br> +&mdash; Applicative: <b>cdadar</b> (<var>cdadar pair</var>)<var><a name="index-cdadar-70"></a></var><br> +&mdash; Applicative: <b>cdaddr</b> (<var>cdaddr pair</var>)<var><a name="index-cdaddr-71"></a></var><br> +&mdash; Applicative: <b>cddaar</b> (<var>cddaar pair</var>)<var><a name="index-cddaar-72"></a></var><br> +&mdash; Applicative: <b>cddadr</b> (<var>cddadr pair</var>)<var><a name="index-cddadr-73"></a></var><br> +&mdash; Applicative: <b>cdddar</b> (<var>cdddar pair</var>)<var><a name="index-cdddar-74"></a></var><br> +&mdash; Applicative: <b>cddddr</b> (<var>cddddr pair</var>)<var><a name="index-cddddr-75"></a></var><br> <blockquote> <!-- TODO add note about pronunciation --> <p>These applicatives are compositions of <code>car</code> and <code>cdr</code>, with @@ -177,7 +177,7 @@ twenty-eight of these applicatives in all. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-list-metrics</b> (<var>get-list-metrics object</var>)<var><a name="index-get_002dlist_002dmetrics-75"></a></var><br> +&mdash; Applicative: <b>get-list-metrics</b> (<var>get-list-metrics object</var>)<var><a name="index-get_002dlist_002dmetrics-76"></a></var><br> <blockquote><!-- TODO move definition of improper list to intro, xref data structure --> <p>By definition, an improper list is a data structure whose objects are its start together with all objects reachable from the start by @@ -206,7 +206,7 @@ is acyclic; if <code>n = 1</code>, the improper list is a finite list; if </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>list-tail</b> (<var>list-tail object k</var>)<var><a name="index-list_002dtail-76"></a></var><br> +&mdash; Applicative: <b>list-tail</b> (<var>list-tail object k</var>)<var><a name="index-list_002dtail-77"></a></var><br> <blockquote><p><code>object</code> must be the start of an improper list containing at least <code>k</code> pairs. @@ -220,7 +220,7 @@ starting from <code>object</code>. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>encycle!</b> (<var>encycle! object k1 k2</var>)<var><a name="index-encycle_0021-77"></a></var><br> +&mdash; Applicative: <b>encycle!</b> (<var>encycle! object k1 k2</var>)<var><a name="index-encycle_0021-78"></a></var><br> <blockquote><p> The improper list starting at <code>object</code> must contain at least <code>k1 + k2</code> pairs. @@ -233,7 +233,7 @@ the <code>(k1 + 1)</code>th pair in the list. The result returned by </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>map</b> (<var>map applicative . lists</var>)<var><a name="index-map-78"></a></var><br> +&mdash; Applicative: <b>map</b> (<var>map applicative . lists</var>)<var><a name="index-map-79"></a></var><br> <blockquote><p> <code>lists</code> must be a nonempty list of lists; if there are two or <!-- TODO add xref to length --> more, they must all have the same length. @@ -259,7 +259,7 @@ called exactly <code>a + c</code> times. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>length</b> (<var>length object</var>)<var><a name="index-length-79"></a></var><br> +&mdash; Applicative: <b>length</b> (<var>length object</var>)<var><a name="index-length-80"></a></var><br> <blockquote><!-- TODO xref improper-list --> <p>Applicative <code>length</code> returns the (exact) improper-list length of <code>object</code>. That is, it returns the number of consecutive cdr @@ -269,7 +269,7 @@ cyclic list, it returns positive infinity. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>list-ref</b> (<var>list-ref object k</var>)<var><a name="index-list_002dref-80"></a></var><br> +&mdash; Applicative: <b>list-ref</b> (<var>list-ref object k</var>)<var><a name="index-list_002dref-81"></a></var><br> <blockquote><p> The <code>list-ref</code> applicative returns the <code>car</code> of the object obtained by following <code>k</code> cdr references starting from <code>object</code>. @@ -283,7 +283,7 @@ in line with the applicative <code>list-tail</code>. That is, we define </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>append</b> (<var>append . lists</var>)<var><a name="index-append-81"></a></var><br> +&mdash; Applicative: <b>append</b> (<var>append . lists</var>)<var><a name="index-append-82"></a></var><br> <blockquote><p> Here, all the elements of <code>lists</code> except the last element (if any) must be acyclic lists. The <code>append</code> applicative returns a freshly allocated list of the elements of all the specified @@ -307,7 +307,7 @@ lists specified in the cycle of <code>lists</code>. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>list-neighbors</b> (<var>list-neighbors list</var>)<var><a name="index-list_002dneighbors-82"></a></var><br> +&mdash; Applicative: <b>list-neighbors</b> (<var>list-neighbors list</var>)<var><a name="index-list_002dneighbors-83"></a></var><br> <blockquote><p> The <code>list-neighbors</code> applicative constructs and returns a list of all the consecutive sublists of <code>list</code> of length 2, in order. If <code>list</code> is nil, the result is nil. If <code>list</code> is non-nil, @@ -323,7 +323,7 @@ length). </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>filter</b> (<var>filter applicative list</var>)<var><a name="index-filter-83"></a></var><br> +&mdash; Applicative: <b>filter</b> (<var>filter applicative list</var>)<var><a name="index-filter-84"></a></var><br> <blockquote><p> Applicative <code>filter</code> passes each of the elements of <code>list</code> as an argument to <code>applicative</code>, one at a time in no particular order, using a fresh empty environment for each call. The result of @@ -338,7 +338,7 @@ the result is acyclic. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>assoc</b> (<var>assoc object pairs</var>)<var><a name="index-assoc-84"></a></var><br> +&mdash; Applicative: <b>assoc</b> (<var>assoc object pairs</var>)<var><a name="index-assoc-85"></a></var><br> <blockquote><p> Applicative <code>assoc</code> returns the first element of <code>pairs</code> whose car is <code>equal?</code> to <code>object</code>. If there is no such element in <code>pairs</code>, nil is returned. @@ -347,7 +347,7 @@ element in <code>pairs</code>, nil is returned. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>member?</b> (<var>member? object list</var>)<var><a name="index-member_003f-85"></a></var><br> +&mdash; Applicative: <b>member?</b> (<var>member? object list</var>)<var><a name="index-member_003f-86"></a></var><br> <blockquote><p> Applicative <code>member?</code> is a predicate that returns true iff some element of <code>list</code> is <code>equal?</code> to <code>object</code>. <!-- TODO add xref/comp to memq --> @@ -355,20 +355,20 @@ element of <code>list</code> is <code>equal?</code> to <code>object</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>finite-list?</b> (<var>finite-list? . objects</var>)<var><a name="index-finite_002dlist_003f-86"></a></var><br> +&mdash; Applicative: <b>finite-list?</b> (<var>finite-list? . objects</var>)<var><a name="index-finite_002dlist_003f-87"></a></var><br> <blockquote><p> This is the type predicate for type finite-list. <code>finite-list?</code> returns true iff all the objects in <code>objects</code> are acyclic lists. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>countable-list?</b> (<var>countable-list? . objects</var>)<var><a name="index-countable_002dlist_003f-87"></a></var><br> +&mdash; Applicative: <b>countable-list?</b> (<var>countable-list? . objects</var>)<var><a name="index-countable_002dlist_003f-88"></a></var><br> <blockquote><p>This is the type predicate for type list. <code>countable-list?</code> returns true iff all the objects in <code>objects</code> are lists. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>reduce</b> (<var>reduce list binary identity </var>[<var>precycle incycle postcycle</var>])<var><a name="index-reduce-88"></a></var><br> +&mdash; Applicative: <b>reduce</b> (<var>reduce list binary identity </var>[<var>precycle incycle postcycle</var>])<var><a name="index-reduce-89"></a></var><br> <blockquote><p> <code>binary</code> should be an applicative. If the short form is used, <code>list</code> should be an acyclic. If the long form is used, <code>precycle</code>, <code>incycle</code>, and <code>postcycle</code> should be @@ -409,7 +409,7 @@ times; <code>incycle</code>, <code>c - 1</code> times; and <code>postcycle</code </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>append!</b> (<var>append! . lists</var>)<var><a name="index-append_0021-89"></a></var><br> +&mdash; Applicative: <b>append!</b> (<var>append! . lists</var>)<var><a name="index-append_0021-90"></a></var><br> <blockquote><p> <code>lists</code> must be a nonempty list; its first element must be an acyclic nonempty list, and all of its elements except the last element (if any) must be acyclic lists. @@ -427,7 +427,7 @@ The result returned by this applicative is inert. </blockquote></div> <div class="defun"> -&mdash; Applicative: <b>copy-es</b> (<var>copy-es object</var>)<var><a name="index-copy_002des-90"></a></var><br> +&mdash; Applicative: <b>copy-es</b> (<var>copy-es object</var>)<var><a name="index-copy_002des-91"></a></var><br> <blockquote><p> Briefly, applicative <code>copy-es</code> returns an object initially <code>equal?</code> to <code>object</code> with a freshly constructed evaluation <!-- TODO add xref to evaluation structure --> @@ -445,7 +445,7 @@ referents being <code>eq?</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>assq</b> (<var>assq object pairs</var>)<var><a name="index-assq-91"></a></var><br> +&mdash; Applicative: <b>assq</b> (<var>assq object pairs</var>)<var><a name="index-assq-92"></a></var><br> <blockquote><p> Applicative <code>assq</code> returns the first element of <code>pairs</code> whose car is <code>eq?</code> to <code>object</code>. If there is no such element in <code>pairs</code>, nil is returned. @@ -454,7 +454,7 @@ in <code>pairs</code>, nil is returned. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>memq?</b> (<var>memq? object list</var>)<var><a name="index-memq_003f-92"></a></var><br> +&mdash; Applicative: <b>memq?</b> (<var>memq? object list</var>)<var><a name="index-memq_003f-93"></a></var><br> <blockquote><p> Applicative <code>memq?</code> is a predicate that returns true iff some element of <code>list</code> is <code>eq?</code> to <code>object</code>. <!-- TODO add xref/comp to member? --> diff --git a/doc/html/Ports.html b/doc/html/Ports.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">16 Ports</h2> +<h2 class="chapter">17 Ports</h2> -<p><a name="index-ports-257"></a> +<p><a name="index-ports-258"></a> A port is an object that mediates data from an input or to a destination. In the former case, the port is an input port, in the latter case, an output port. The data itself can consist of either @@ -58,14 +58,14 @@ normal result of a call to read). The eof type is encapsulated. klisp and was taken from Scheme. <div class="defun"> -&mdash; Applicative: <b>port?</b> (<var>port? . objects</var>)<var><a name="index-port_003f-258"></a></var><br> +&mdash; Applicative: <b>port?</b> (<var>port? . objects</var>)<var><a name="index-port_003f-259"></a></var><br> <blockquote><p> The primitive type predicate for type port. <code>port?</code> returns true iff all the objects in <code>objects</code> are of type port. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>input-port?</b> (<var>input-port? . objects</var>)<var><a name="index-input_002dport_003f-259"></a></var><br> -&mdash; Applicative: <b>output-port?</b> (<var>output-port? . objects</var>)<var><a name="index-output_002dport_003f-260"></a></var><br> +&mdash; Applicative: <b>input-port?</b> (<var>input-port? . objects</var>)<var><a name="index-input_002dport_003f-260"></a></var><br> +&mdash; Applicative: <b>output-port?</b> (<var>output-port? . objects</var>)<var><a name="index-output_002dport_003f-261"></a></var><br> <blockquote><p> Applicative <code>input-port?</code> is a predicate that returns true unless one or more of its arguments is not an input port. Applicative <code>output-port?</code> is a predicate that returns true unless one or @@ -75,8 +75,8 @@ more of its arguments is not an output port. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>textual-port?</b> (<var>textual-port? . objects</var>)<var><a name="index-textual_002dport_003f-261"></a></var><br> -&mdash; Applicative: <b>binary-port?</b> (<var>binary-port? . objects</var>)<var><a name="index-binary_002dport_003f-262"></a></var><br> +&mdash; Applicative: <b>textual-port?</b> (<var>textual-port? . objects</var>)<var><a name="index-textual_002dport_003f-262"></a></var><br> +&mdash; Applicative: <b>binary-port?</b> (<var>binary-port? . objects</var>)<var><a name="index-binary_002dport_003f-263"></a></var><br> <blockquote><p> Applicative <code>textual-port?</code> is a predicate that returns true unless one or more of its arguments is not a textual port. Applicative <code>binary-port?</code> is a predicate that returns true unless one or more of @@ -88,9 +88,9 @@ its arguments is not a binary port. </p></blockquote></div> <div class="defun"> -&mdash; with-input-from-file: <b>(</b><var>with-input-from-file string combiner</var>)<var><a name="index-g_t_0028-263"></a></var><br> -&mdash; with-output-to-file: <b>(</b><var>with-output-to-file string combiner</var>)<var><a name="index-g_t_0028-264"></a></var><br> -&mdash; with-error-to-file: <b>(</b><var>with-error-to-file string combiner</var>)<var><a name="index-g_t_0028-265"></a></var><br> +&mdash; Applicative: <b>with-input-from-file</b> (<var>with-input-from-file string combiner</var>)<var><a name="index-with_002dinput_002dfrom_002dfile-264"></a></var><br> +&mdash; Applicative: <b>with-output-to-file</b> (<var>with-output-to-file string combiner</var>)<var><a name="index-with_002doutput_002dto_002dfile-265"></a></var><br> +&mdash; Applicative: <b>with-error-to-file</b> (<var>with-error-to-file string combiner</var>)<var><a name="index-with_002derror_002dto_002dfile-266"></a></var><br> <blockquote><!-- add xref get-current-input-port/get-current-output-port --> <p>These three applicatives open the file named in <code>string</code> for textual input or output, an invoke the binder of either the @@ -106,9 +106,9 @@ the text is still missing. The third applicative is from Scheme. </p></blockquote></div> <div class="defun"> -&mdash; get-current-input-port: <b>(</b><var>get-current-input-port</var>)<var><a name="index-g_t_0028-266"></a></var><br> -&mdash; get-current-output-port: <b>(</b><var>get-current-output-port</var>)<var><a name="index-g_t_0028-267"></a></var><br> -&mdash; get-current-error-port: <b>(</b><var>get-current-error-port</var>)<var><a name="index-g_t_0028-268"></a></var><br> +&mdash; Applicative: <b>get-current-input-port</b> (<var>get-current-input-port</var>)<var><a name="index-get_002dcurrent_002dinput_002dport-267"></a></var><br> +&mdash; Applicative: <b>get-current-output-port</b> (<var>get-current-output-port</var>)<var><a name="index-get_002dcurrent_002doutput_002dport-268"></a></var><br> +&mdash; Applicative: <b>get-current-error-port</b> (<var>get-current-error-port</var>)<var><a name="index-get_002dcurrent_002derror_002dport-269"></a></var><br> <blockquote><p> These are the accessors for the input-port, output-port, and error-port keyed dynamic variables repectively. <!-- add xref to with-input-from-file, etc --> @@ -119,8 +119,8 @@ the text is still missing. The third applicative is from Scheme. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>open-input-file</b> (<var>open-input-file string</var>)<var><a name="index-open_002dinput_002dfile-269"></a></var><br> -&mdash; Applicative: <b>open-binary-input-file</b> (<var>open-binary-input-file string</var>)<var><a name="index-open_002dbinary_002dinput_002dfile-270"></a></var><br> +&mdash; Applicative: <b>open-input-file</b> (<var>open-input-file string</var>)<var><a name="index-open_002dinput_002dfile-270"></a></var><br> +&mdash; Applicative: <b>open-binary-input-file</b> (<var>open-binary-input-file string</var>)<var><a name="index-open_002dbinary_002dinput_002dfile-271"></a></var><br> <blockquote><p> <code>string</code> should be the name/path for an existing file. <p>Applicative <code>open-input-file</code> creates and returns a textual @@ -135,8 +135,8 @@ the text is still missing. open-binary-input-file is from Scheme. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>open-output-file</b> (<var>open-output-file string</var>)<var><a name="index-open_002doutput_002dfile-271"></a></var><br> -&mdash; Applicative: <b>open-binary-output-file</b> (<var>open-binary-output-file string</var>)<var><a name="index-open_002dbinary_002doutput_002dfile-272"></a></var><br> +&mdash; Applicative: <b>open-output-file</b> (<var>open-output-file string</var>)<var><a name="index-open_002doutput_002dfile-272"></a></var><br> +&mdash; Applicative: <b>open-binary-output-file</b> (<var>open-binary-output-file string</var>)<var><a name="index-open_002dbinary_002doutput_002dfile-273"></a></var><br> <blockquote><p> <code>string</code> should be the name/path for an existing file. <p>Applicative <code>open-output-file</code> creates and returns a textual @@ -156,8 +156,8 @@ the text is still missing. open-binary-output-file is from Scheme. </p></blockquote></div> <div class="defun"> -&mdash; close-input-file: <b>(</b><var>close-input-file input-port</var>)<var><a name="index-g_t_0028-273"></a></var><br> -&mdash; close-output-file: <b>(</b><var>close-output-file output-port</var>)<var><a name="index-g_t_0028-274"></a></var><br> +&mdash; Applicative: <b>close-input-file</b> (<var>close-input-file input-port</var>)<var><a name="index-close_002dinput_002dfile-274"></a></var><br> +&mdash; Applicative: <b>close-output-file</b> (<var>close-output-file output-port</var>)<var><a name="index-close_002doutput_002dfile-275"></a></var><br> <blockquote><p> These applicatives close the port argument, so that no more input/output may be performed on them, and the resources can be freed. If the port was already closed these applicatives have no @@ -172,9 +172,9 @@ probably be called close-input-port &amp; close-output-port. </p></blockquote></div> <div class="defun"> -&mdash; close-input-port: <b>(</b><var>close-input-port input-port</var>)<var><a name="index-g_t_0028-275"></a></var><br> -&mdash; close-output-port: <b>(</b><var>close-output-port output-port</var>)<var><a name="index-g_t_0028-276"></a></var><br> -&mdash; close-port: <b>(</b><var>close-port port</var>)<var><a name="index-g_t_0028-277"></a></var><br> +&mdash; Applicative: <b>close-input-port</b> (<var>close-input-port input-port</var>)<var><a name="index-close_002dinput_002dport-276"></a></var><br> +&mdash; Applicative: <b>close-output-port</b> (<var>close-output-port output-port</var>)<var><a name="index-close_002doutput_002dport-277"></a></var><br> +&mdash; Applicative: <b>close-port</b> (<var>close-port port</var>)<var><a name="index-close_002dport-278"></a></var><br> <blockquote><p> These applicatives close the port argument, so that no more input/output may be performed on them, and the resources can be freed. If the port was already closed these applicatives have no @@ -190,7 +190,7 @@ errors and only retained here till the draft standard rectifies them </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>read</b> (<var>read </var>[<var>textual-input-port</var>])<var><a name="index-read-278"></a></var><br> +&mdash; Applicative: <b>read</b> (<var>read </var>[<var>textual-input-port</var>])<var><a name="index-read-279"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>input-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -206,7 +206,7 @@ still missing. </p></blockquote></div> <div class="defun"> -&mdash; write: <b>(</b><var>write object </var>[<var>textual-output-port</var>])<var><a name="index-g_t_0028-279"></a></var><br> +&mdash; Applicative: <b>write</b> (<var>write object </var>[<var>textual-output-port</var>])<var><a name="index-write-280"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>output-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -224,8 +224,8 @@ still missing. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>call-with-input-file</b> (<var>call-with-input-file string combiner</var>)<var><a name="index-call_002dwith_002dinput_002dfile-280"></a></var><br> -&mdash; Applicative: <b>call-with-output-file</b> (<var>call-with-output-file string combiner</var>)<var><a name="index-call_002dwith_002doutput_002dfile-281"></a></var><br> +&mdash; Applicative: <b>call-with-input-file</b> (<var>call-with-input-file string combiner</var>)<var><a name="index-call_002dwith_002dinput_002dfile-281"></a></var><br> +&mdash; Applicative: <b>call-with-output-file</b> (<var>call-with-output-file string combiner</var>)<var><a name="index-call_002dwith_002doutput_002dfile-282"></a></var><br> <blockquote><p> These applicatives open file named in <code>string</code> for textual input/output respectively and call their <code>combiner</code> argument in a fresh empty environment passing it as a sole operand the opened port. @@ -237,7 +237,7 @@ still missing. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>load</b> (<var>load string</var>)<var><a name="index-load-282"></a></var><br> +&mdash; Applicative: <b>load</b> (<var>load string</var>)<var><a name="index-load-283"></a></var><br> <blockquote><!-- TODO add xref, open/input, read --> <p>Applicative <code>load</code> opens the file named <code>string</code> for textual input; reads objects from the file until the end of the file @@ -253,7 +253,7 @@ return the value of the last evaluation. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-module</b> (<var>get-module string </var>[<var>environment</var>])<var><a name="index-get_002dmodule-283"></a></var><br> +&mdash; Applicative: <b>get-module</b> (<var>get-module string </var>[<var>environment</var>])<var><a name="index-get_002dmodule-284"></a></var><br> <blockquote><!-- TODO add xref standard-environment, open/input, read --> <p>Applicative <code>get-module</code> creates a fresh standard environment; opens the file named <code>string</code> for textual input; reads objects @@ -266,7 +266,7 @@ prior to evaluating read expressions, by binding symbol </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>eof-object?</b> (<var>eof-object? . objects</var>)<var><a name="index-eof_002dobject_003f-284"></a></var><br> +&mdash; Applicative: <b>eof-object?</b> (<var>eof-object? . objects</var>)<var><a name="index-eof_002dobject_003f-285"></a></var><br> <blockquote><p> The primitive type predicate for type eof. <code>eof-object?</code> returns true iff all the objects in <code>objects</code> are of type eof. @@ -277,7 +277,7 @@ primitive type predicates. </p></blockquote></div> <div class="defun"> -&mdash; read-char: <b>(</b><var>read-char </var>[<var>textual-input-port</var>])<var><a name="index-g_t_0028-285"></a></var><br> +&mdash; Applicative: <b>read-char</b> (<var>read-char </var>[<var>textual-input-port</var>])<var><a name="index-read_002dchar-286"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>input-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -290,7 +290,7 @@ an <code>eof</code> if the end of file was reached. </p></blockquote></div> <div class="defun"> -&mdash; peek-char: <b>(</b><var>peek-char </var>[<var>textual-input-port</var>])<var><a name="index-g_t_0028-286"></a></var><br> +&mdash; Applicative: <b>peek-char</b> (<var>peek-char </var>[<var>textual-input-port</var>])<var><a name="index-peek_002dchar-287"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>input-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -305,7 +305,7 @@ remains unchanged so that new call to <code>peek-char</code> or </p></blockquote></div> <div class="defun"> -&mdash; char-ready?: <b>(</b><var>char-ready? </var>[<var>textual-input-port</var>])<var><a name="index-g_t_0028-287"></a></var><br> +&mdash; Applicative: <b>char-ready?</b> (<var>char-ready? </var>[<var>textual-input-port</var>])<var><a name="index-char_002dready_003f-288"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>input-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -320,7 +320,7 @@ the code to do this is non-portable. </p></blockquote></div> <div class="defun"> -&mdash; write-char: <b>(</b><var>write-char char </var>[<var>textual-output-port</var>])<var><a name="index-g_t_0028-288"></a></var><br> +&mdash; Applicative: <b>write-char</b> (<var>write-char char </var>[<var>textual-output-port</var>])<var><a name="index-write_002dchar-289"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>output-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -333,7 +333,7 @@ The result returned by <code>write-char</code> is inert. </p></blockquote></div> <div class="defun"> -&mdash; newline: <b>(</b><var>newline </var>[<var>textal-ouput-port</var>])<var><a name="index-g_t_0028-289"></a></var><br> +&mdash; Applicative: <b>newline</b> (<var>newline </var>[<var>textal-ouput-port</var>])<var><a name="index-newline-290"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>output-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -345,7 +345,7 @@ The result returned by <code>newline</code> is inert. </p></blockquote></div> <div class="defun"> -&mdash; display: <b>(</b><var>display object </var>[<var>textual-output-port</var>])<var><a name="index-g_t_0028-290"></a></var><br> +&mdash; Applicative: <b>display</b> (<var>display object </var>[<var>textual-output-port</var>])<var><a name="index-display-291"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>output-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -360,7 +360,7 @@ within those strings and character objects are output as if by </p></blockquote></div> <div class="defun"> -&mdash; read-u8: <b>(</b><var>read-u8 </var>[<var>textual-input-port</var>])<var><a name="index-g_t_0028-291"></a></var><br> +&mdash; Applicative: <b>read-u8</b> (<var>read-u8 </var>[<var>textual-input-port</var>])<var><a name="index-read_002du8-292"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>input-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -374,7 +374,7 @@ the end of file was reached. </p></blockquote></div> <div class="defun"> -&mdash; peek-u8: <b>(</b><var>peek-u8 </var>[<var>textual-input-port</var>])<var><a name="index-g_t_0028-292"></a></var><br> +&mdash; Applicative: <b>peek-u8</b> (<var>peek-u8 </var>[<var>textual-input-port</var>])<var><a name="index-peek_002du8-293"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>input-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -390,7 +390,7 @@ same port return the same byte. </p></blockquote></div> <div class="defun"> -&mdash; u8-ready?: <b>(</b><var>u8-ready? </var>[<var>textual-input-port</var>])<var><a name="index-g_t_0028-293"></a></var><br> +&mdash; Applicative: <b>u8-ready?</b> (<var>u8-ready? </var>[<var>textual-input-port</var>])<var><a name="index-u8_002dready_003f-294"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>input-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -405,7 +405,7 @@ the code to do this is non-portable. </p></blockquote></div> <div class="defun"> -&mdash; write-u8: <b>(</b><var>write-u8 u8 </var>[<var>textual-output-port</var>])<var><a name="index-g_t_0028-294"></a></var><br> +&mdash; Applicative: <b>write-u8</b> (<var>write-u8 u8 </var>[<var>textual-output-port</var>])<var><a name="index-write_002du8-295"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>output-port</code> keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -419,7 +419,7 @@ result returned by <code>write-u8</code> is inert. </p></blockquote></div> <div class="defun"> -&mdash; flush-output-port: <b>(</b><var>flush-output-port </var>[<var>output-port</var>])<var><a name="index-g_t_0028-295"></a></var><br> +&mdash; Applicative: <b>flush-output-port</b> (<var>flush-output-port </var>[<var>output-port</var>])<var><a name="index-flush_002doutput_002dport-296"></a></var><br> <blockquote><p> If the <code>port</code> optional argument is not specified, then the value of the <code>output-port</code> keyed dynamic variable is used. If the <code>port</code> is closed or if it is not an output port, an error is @@ -433,7 +433,7 @@ output port to the underlying file or device. The result returned by </p></blockquote></div> <div class="defun"> -&mdash; file-exists?: <b>(</b><var>file-exists? string</var>)<var><a name="index-g_t_0028-296"></a></var><br> +&mdash; Applicative: <b>file-exists?</b> (<var>file-exists? string</var>)<var><a name="index-file_002dexists_003f-297"></a></var><br> <blockquote><p> <code>string</code> should be the name/path for a file. <p>Predicate <code>file-exists?</code> checks to see if a file named @@ -443,7 +443,7 @@ output port to the underlying file or device. The result returned by </p></blockquote></div> <div class="defun"> -&mdash; delete-file: <b>(</b><var>delete-file string</var>)<var><a name="index-g_t_0028-297"></a></var><br> +&mdash; Applicative: <b>delete-file</b> (<var>delete-file string</var>)<var><a name="index-delete_002dfile-298"></a></var><br> <blockquote><p> <code>string</code> should be the name/path for an existing file. <p>Applicative <code>delete-file</code> deletes the file named <code>string</code>. @@ -454,7 +454,7 @@ result returned by <code>delete-file</code> is inert. </p></blockquote></div> <div class="defun"> -&mdash; rename-file: <b>(</b><var>rename-file string1 string2</var>)<var><a name="index-g_t_0028-298"></a></var><br> +&mdash; Applicative: <b>rename-file</b> (<var>rename-file string1 string2</var>)<var><a name="index-rename_002dfile-299"></a></var><br> <blockquote><p> <code>string1</code> should be the name/path for an existing file, <code>string2</code> should be the name/path for a non existing file. diff --git a/doc/html/Promises.html b/doc/html/Promises.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">11 Promises</h2> +<h2 class="chapter">12 Promises</h2> -<p><a name="index-promises-140"></a> +<p><a name="index-promises-141"></a> <!-- TODO xref to $lazy, memoize, force --> A promise is an object that represents the potential to determine a value. The value may be the result of an arbitrary computation that @@ -64,14 +64,14 @@ the promises may or may not be <code>eq?</code>. Two promises are <code>equal?</code> iff they are <code>eq?</code>. <div class="defun"> -&mdash; Applicative: <b>promise?</b> (<var>promise? . objects</var>)<var><a name="index-promise_003f-141"></a></var><br> +&mdash; Applicative: <b>promise?</b> (<var>promise? . objects</var>)<var><a name="index-promise_003f-142"></a></var><br> <blockquote><p> The primitive type predicate for type promise. <code>promise?</code> returns true iff all the objects in <code>objects</code> are of type promise. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>force</b> (<var>force object</var>)<var><a name="index-force-142"></a></var><br> +&mdash; Applicative: <b>force</b> (<var>force object</var>)<var><a name="index-force-143"></a></var><br> <blockquote><p> If <code>object</code> is a promise, applicative <code>force</code> returns the value determined by promise; otherwise, it returns <code>object</code>. @@ -81,7 +81,7 @@ how to force promises constructed by that constructor. </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$lazy</b> (<var>$lazy expression</var>)<var><a name="index-g_t_0024lazy-143"></a></var><br> +&mdash; Operative: <b>$lazy</b> (<var>$lazy expression</var>)<var><a name="index-g_t_0024lazy-144"></a></var><br> <blockquote><p> Operative <code>$lazy</code> constructs and returns a new object of type promise, representing potential evaluation of expression in the dynamic environment from which <code>$lazy</code> was called. @@ -114,7 +114,7 @@ evaluation will take place the first time each of them is forced. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>memoize</b> (<var>memoize object</var>)<var><a name="index-memoize-144"></a></var><br> +&mdash; Applicative: <b>memoize</b> (<var>memoize object</var>)<var><a name="index-memoize-145"></a></var><br> <blockquote><p> Applicative <code>memoize</code> constructs and returns a new object of type promise, representing memoization of <code>object</code>. Whenever the promise is forced, it determines <code>object</code>. diff --git a/doc/html/Strings.html b/doc/html/Strings.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">14 Strings</h2> +<h2 class="chapter">15 Strings</h2> -<p><a name="index-strings-212"></a> +<p><a name="index-strings-213"></a> A string is an object that represent a sequence of characters (for now, only ASCII is supported in klisp, in the future, full UNICODE will be supported). The external representation of strings consists @@ -68,34 +68,34 @@ to a new type (like Java's StringBuilder/StringBuffer). But for now, compatibility with r5rs was preferred/simpler. <div class="defun"> -&mdash; Applicative: <b>string?</b> (<var>string? . objects</var>)<var><a name="index-string_003f-213"></a></var><br> +&mdash; Applicative: <b>string?</b> (<var>string? . objects</var>)<var><a name="index-string_003f-214"></a></var><br> <blockquote><p> The primitive type predicate for type string. <code>string?</code> returns true iff all the objects in <code>objects</code> are of type string. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string=?</b> (<var>string=? . strings</var>)<var><a name="index-string_003d_003f-214"></a></var><br> -&mdash; Applicative: <b>string&lt;?</b> (<var>string&lt;? . strings</var>)<var><a name="index-string_003c_003f-215"></a></var><br> -&mdash; Applicative: <b>string&lt;=?</b> (<var>string&lt;=? . strings</var>)<var><a name="index-string_003c_003d_003f-216"></a></var><br> -&mdash; Applicative: <b>string&gt;?</b> (<var>string&gt;? . strings</var>)<var><a name="index-string_003e_003f-217"></a></var><br> -&mdash; Applicative: <b>string&gt;=?</b> (<var>string&gt;=? . strings</var>)<var><a name="index-string_003e_003d_003f-218"></a></var><br> +&mdash; Applicative: <b>string=?</b> (<var>string=? . strings</var>)<var><a name="index-string_003d_003f-215"></a></var><br> +&mdash; Applicative: <b>string&lt;?</b> (<var>string&lt;? . strings</var>)<var><a name="index-string_003c_003f-216"></a></var><br> +&mdash; Applicative: <b>string&lt;=?</b> (<var>string&lt;=? . strings</var>)<var><a name="index-string_003c_003d_003f-217"></a></var><br> +&mdash; Applicative: <b>string&gt;?</b> (<var>string&gt;? . strings</var>)<var><a name="index-string_003e_003f-218"></a></var><br> +&mdash; Applicative: <b>string&gt;=?</b> (<var>string&gt;=? . strings</var>)<var><a name="index-string_003e_003d_003f-219"></a></var><br> <blockquote><p> These predicates compare any number of strings by their lexicographic order. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-ci=?</b> (<var>string-ci=? . strings</var>)<var><a name="index-string_002dci_003d_003f-219"></a></var><br> -&mdash; Applicative: <b>string-ci&lt;?</b> (<var>string-ci&lt;? . strings</var>)<var><a name="index-string_002dci_003c_003f-220"></a></var><br> -&mdash; Applicative: <b>string-ci&lt;=?</b> (<var>string-ci&lt;=? . strings</var>)<var><a name="index-string_002dci_003c_003d_003f-221"></a></var><br> -&mdash; Applicative: <b>string-ci&gt;?</b> (<var>string-ci&gt;? . strings</var>)<var><a name="index-string_002dci_003e_003f-222"></a></var><br> -&mdash; Applicative: <b>string-ci&gt;=?</b> (<var>string-ci&gt;=? . strings</var>)<var><a name="index-string_002dci_003e_003d_003f-223"></a></var><br> +&mdash; Applicative: <b>string-ci=?</b> (<var>string-ci=? . strings</var>)<var><a name="index-string_002dci_003d_003f-220"></a></var><br> +&mdash; Applicative: <b>string-ci&lt;?</b> (<var>string-ci&lt;? . strings</var>)<var><a name="index-string_002dci_003c_003f-221"></a></var><br> +&mdash; Applicative: <b>string-ci&lt;=?</b> (<var>string-ci&lt;=? . strings</var>)<var><a name="index-string_002dci_003c_003d_003f-222"></a></var><br> +&mdash; Applicative: <b>string-ci&gt;?</b> (<var>string-ci&gt;? . strings</var>)<var><a name="index-string_002dci_003e_003f-223"></a></var><br> +&mdash; Applicative: <b>string-ci&gt;=?</b> (<var>string-ci&gt;=? . strings</var>)<var><a name="index-string_002dci_003e_003d_003f-224"></a></var><br> <blockquote><p> These predicates convert the strings to lowercase and then compare them using their lexicographic order. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>make-string</b> (<var>make-string k </var>[<var>char</var>])<var><a name="index-make_002dstring-224"></a></var><br> +&mdash; Applicative: <b>make-string</b> (<var>make-string k </var>[<var>char</var>])<var><a name="index-make_002dstring-225"></a></var><br> <blockquote><p> Applicative <code>make-string</code> constructs and returns a new mutable string of length <code>k</code>. If <code>char</code> is specified, then all characters in the returned string are <code>char</code>, otherwise the @@ -103,19 +103,19 @@ content of the string is unspecified. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string</b> (<var>string . chars</var>)<var><a name="index-string-225"></a></var><br> +&mdash; Applicative: <b>string</b> (<var>string . chars</var>)<var><a name="index-string-226"></a></var><br> <blockquote><p> Applicative <code>string</code> contructs and return a new mutable string composed of the character arguments. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-length</b> (<var>string-length string</var>)<var><a name="index-string_002dlength-226"></a></var><br> +&mdash; Applicative: <b>string-length</b> (<var>string-length string</var>)<var><a name="index-string_002dlength-227"></a></var><br> <blockquote><p> Applicative <code>string-length</code> returns the length of <code>string</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-ref</b> (<var>string-ref string k</var>)<var><a name="index-string_002dref-227"></a></var><br> +&mdash; Applicative: <b>string-ref</b> (<var>string-ref string k</var>)<var><a name="index-string_002dref-228"></a></var><br> <blockquote><p> Applicative <code>string-ref</code> returns the character of <code>string</code> at position <code>k</code>. If <code>k</code> is out of bounds (i.e. less than <code>0</code> or greater or equal than <code>(length string)</code>) an error is @@ -123,21 +123,21 @@ signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-set!</b> (<var>string-set! string k char</var>)<var><a name="index-string_002dset_0021-228"></a></var><br> +&mdash; Applicative: <b>string-set!</b> (<var>string-set! string k char</var>)<var><a name="index-string_002dset_0021-229"></a></var><br> <blockquote><p> Applicative <code>string-set!</code> replaces the character with index <code>k</code> in <code>string</code> with character <code>char</code>. If <code>k</code> is out of bounds, or <code>string</code> is immutable, an error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-fill!</b> (<var>string-fill! string char</var>)<var><a name="index-string_002dfill_0021-229"></a></var><br> +&mdash; Applicative: <b>string-fill!</b> (<var>string-fill! string char</var>)<var><a name="index-string_002dfill_0021-230"></a></var><br> <blockquote><p> Applicative <code>string-fill!</code> replaces all the characters in <code>string</code> with character <code>char</code>. If <code>string</code> is an immutable string, an error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>substring</b> (<var>substring string k1 k2</var>)<var><a name="index-substring-230"></a></var><br> +&mdash; Applicative: <b>substring</b> (<var>substring string k1 k2</var>)<var><a name="index-substring-231"></a></var><br> <blockquote><p> Both <code>k1</code> &amp; <code>k2</code> should be valid indexes in <code>string</code>. Also it should be the case that <code>k1 &lt;= k2</code>. @@ -148,27 +148,27 @@ index <code>k2</code> (exclusive). </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-append</b> (<var>string-append . strings</var>)<var><a name="index-string_002dappend-231"></a></var><br> +&mdash; Applicative: <b>string-append</b> (<var>string-append . strings</var>)<var><a name="index-string_002dappend-232"></a></var><br> <blockquote><p> Applicative <code>string-append</code> constructs and returns a new mutable string consisting of the concatenation of all its arguments. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-copy</b> (<var>string-copy string</var>)<var><a name="index-string_002dcopy-232"></a></var><br> +&mdash; Applicative: <b>string-copy</b> (<var>string-copy string</var>)<var><a name="index-string_002dcopy-233"></a></var><br> <blockquote><p> Applicative <code>string-copy</code> constructs and returns a new mutable string with the same length and characters as <code>string</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-&gt;immutable-string</b> (<var>string-&gt;immutable-string string</var>)<var><a name="index-string_002d_003eimmutable_002dstring-233"></a></var><br> +&mdash; Applicative: <b>string-&gt;immutable-string</b> (<var>string-&gt;immutable-string string</var>)<var><a name="index-string_002d_003eimmutable_002dstring-234"></a></var><br> <blockquote><p> Applicative <code>string-&gt;immutable-string</code> constructs and returns a new immutable string with the same length and characters as <code>string</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-&gt;list</b> (<var>string-&gt;list string</var>)<var><a name="index-string_002d_003elist-234"></a></var><br> -&mdash; Applicative: <b>list-&gt;string</b> (<var>list-&gt;string chars</var>)<var><a name="index-list_002d_003estring-235"></a></var><br> +&mdash; Applicative: <b>string-&gt;list</b> (<var>string-&gt;list string</var>)<var><a name="index-string_002d_003elist-235"></a></var><br> +&mdash; Applicative: <b>list-&gt;string</b> (<var>list-&gt;string chars</var>)<var><a name="index-list_002d_003estring-236"></a></var><br> <blockquote><p> Applicatives <code>string-&gt;list</code> and <code>list-&gt;string</code> convert between strings and list of characters. The strings returned by <code>list-&gt;string</code> are mutable. diff --git a/doc/html/Symbols.html b/doc/html/Symbols.html @@ -32,9 +32,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">4 Symbols</h2> +<h2 class="chapter">5 Symbols</h2> -<p><a name="index-symbols-22"></a><!-- TODO add xref to eq?, identifiers, etc --> +<p><a name="index-symbols-23"></a><!-- TODO add xref to eq?, identifiers, etc --> Two symbols are eq? iff they have the same external representation. Symbols are immutable, and the symbol type is encapsulated. The external representations of symbols are usually @@ -43,19 +43,19 @@ identifiers. However, symbols with other external representations may be created. <div class="defun"> -&mdash; Applicative: <b>symbol?</b> (<var>symbol? . objects</var>)<var><a name="index-symbol_003f-23"></a></var><br> +&mdash; Applicative: <b>symbol?</b> (<var>symbol? . objects</var>)<var><a name="index-symbol_003f-24"></a></var><br> <blockquote><p> The primitive type predicate for type symbol. <code>symbol?</code> returns true iff all the objects in <code>objects</code> are of type symbol. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>symbol-&gt;string</b> (<var>symbol-&gt;string symbol</var>)<var><a name="index-symbol_002d_003estring-24"></a></var><br> +&mdash; Applicative: <b>symbol-&gt;string</b> (<var>symbol-&gt;string symbol</var>)<var><a name="index-symbol_002d_003estring-25"></a></var><br> <blockquote><p> Applicative <code>symbol-&gt;string</code> returns the name of <code>symbol</code> as a string. The string returned is immutable. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>string-&gt;symbol</b> (<var>string-&gt;symbol string</var>)<var><a name="index-string_002d_003esymbol-25"></a></var><br> +&mdash; Applicative: <b>string-&gt;symbol</b> (<var>string-&gt;symbol string</var>)<var><a name="index-string_002d_003esymbol-26"></a></var><br> <blockquote><p> Applicative <code>string-&gt;symbol</code> returns the symbol with name <code>string</code>. The symbol is always interned, which means, that it is always the case that: diff --git a/doc/html/index.html b/doc/html/index.html @@ -37,13 +37,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="../index.html#dir">(dir)</a> <li><a accesskey="1" href="License.html#License">License</a>: Conditions for copying and changing klisp. <li><a accesskey="2" href="Introduction.html#Introduction">Introduction</a>: Introduction and conventions used. <!-- TODO lisp types and other introductions --> -<li><a accesskey="3" href="Booleans.html#Booleans">Booleans</a>: Booleans module features. -<li><a accesskey="4" href="Equivalence.html#Equivalence">Equivalence</a>: Equivalence (under &amp; up to) mutation modules features. -<li><a accesskey="5" href="Symbols.html#Symbols">Symbols</a>: Symbols module features. -<li><a accesskey="6" href="Control.html#Control">Control</a>: Control module features. -<li><a accesskey="7" href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a>: Pairs and lists and Pair mutation modules features. -<li><a accesskey="8" href="Environments.html#Environments">Environments</a>: Environments and Environment mutation modules features. -<li><a accesskey="9" href="Combiners.html#Combiners">Combiners</a>: Combiners module features. +<li><a accesskey="3" href="Interpreter.html#Interpreter">Interpreter</a>: The klisp stand-alone interpreter +<li><a accesskey="4" href="Booleans.html#Booleans">Booleans</a>: Booleans module features. +<li><a accesskey="5" href="Equivalence.html#Equivalence">Equivalence</a>: Equivalence (under &amp; up to) mutation modules features. +<li><a accesskey="6" href="Symbols.html#Symbols">Symbols</a>: Symbols module features. +<li><a accesskey="7" href="Control.html#Control">Control</a>: Control module features. +<li><a accesskey="8" href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a>: Pairs and lists and Pair mutation modules features. +<li><a accesskey="9" href="Environments.html#Environments">Environments</a>: Environments and Environment mutation modules features. +<li><a href="Combiners.html#Combiners">Combiners</a>: Combiners module features. <li><a href="Continuations.html#Continuations">Continuations</a>: Continuations module features. <li><a href="Encapsulations.html#Encapsulations">Encapsulations</a>: Encapsulations module features. <li><a href="Promises.html#Promises">Promises</a>: Promises module features. diff --git a/doc/klisp.1 b/doc/klisp.1 @@ -14,7 +14,7 @@ klisp \- Kernel Programming Language interpreter ] .SH DESCRIPTION .B klisp -is a stand-alone klisp interpreter for +is a stand-alone interpreter for the Kernel Programming Language. It loads and evaluates Kernel programs in textual source form. @@ -46,7 +46,7 @@ via the applicative If these arguments contain spaces or other characters special to the shell, then they should be quoted (but note that the quotes will be removed by the shell). -The complete command line +The complete command line, including the name of the interpreter, options, the script, and its arguments are available as a list of strings @@ -78,6 +78,14 @@ then is assumed when the standard input is a terminal; otherwise, .B "\-" +is assumed. If no +.IR script , +or option +.BR "\-e" , +or +.BR "\-l" , +is given, +.B "\-i" is assumed. .LP In interactive mode, @@ -124,7 +132,7 @@ is executed. Typically used to load libraries. .TP .B \-v -show version information. +show version and copyright information. .SH EXIT STATUS If the .I script diff --git a/doc/klisp.info b/doc/klisp.info @@ -40,6 +40,7 @@ the header "Permission to copy this report", that reads: * License:: Conditions for copying and changing klisp. * Introduction:: Introduction and conventions used. +* Interpreter:: The klisp stand-alone interpreter * Booleans:: Booleans module features. * Equivalence:: Equivalence (under & up to) mutation modules features. * Symbols:: Symbols module features. @@ -98,7 +99,7 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  -File: klisp.info, Node: Introduction, Next: Booleans, Prev: License, Up: Top +File: klisp.info, Node: Introduction, Next: Interpreter, Prev: License, Up: Top 1 Introduction ************** @@ -376,9 +377,132 @@ manual also borrows freely from both the Kernel Report and the Scheme Reports.  -File: klisp.info, Node: Booleans, Next: Equivalence, Prev: Introduction, Up: Top +File: klisp.info, Node: Interpreter, Next: Booleans, Prev: Introduction, Up: Top -2 Booleans +2 Interpreter +************* + +This section describes the `klisp', a Kernel Programming Language +stand-alone interpreter. + +2.1 Invocation +============== + +`klisp' is invoked like this: + klisp [options] [script] + +2.2 Description +=============== + +`klisp' is a stand-alone klisp interpreter for the Kernel Programming +Language. It loads and evaluates Kernel programs in textual source +form. `klisp' can be used as a batch interpreter and also +interactively. The given `options' (*note Command Line Options::) are +evaluated and then the klisp program in file `script' is loaded and +evaluated. All evaluations mentioned, including the initialization +that is described below, take place in the same (initially) standard +environment. All values that result from these evaluation are +discarded, but if the `root-continuation' or `error-continuation' are +passed a value, the evaluation of `options' is interrupted and `klisp' +terminates. *Note Exit Status: Interpreter Exit Status, for a +description of the exit status in each case. + + The string `script' together with all arguments are available as a +list of strings via the applicative `get-script-arguments'. If these +arguments contain spaces or other characters special to the shell, then +they should be quoted (but note that the quotes will be removed by the +shell). The complete command line, including the name of the +interpreter, options, the script, and its arguments are available as a +list of strings via the applicative `get-interpreter-arguments'. + + At the very beginning, before even handling the command line, +`klisp' reads and evaluates the contents of the environment variable +`KLISP_INIT', if it is defined. To use an init file, just define +`KLISP_INIT' to the following form: `(load "/path/to/init-file")'. +Notice that `klisp' expects exactly one expression in `KLISP_INIT', if +it is defined. So it is an error to have no expressions or more than +one in `KLISP_INIT'. The same is true of the argument to the `-e' +option, as both are implemented in terms of `string-eval'. + + In interactive mode, `klisp' prompts the user, reads expressions +from the standard input, and evaluates them as they are read. The +default prompt is "klisp> ". + +2.3 Options +=========== + +Options start with `-' and are described below. You can use `--' to +signal the end of options. If no arguments are given, then `-v' `-i' +is assumed when the standard input is a terminal; otherwise, `-' is +assumed. If no SCRIPT, or option `-e' or `-l' is given, `-i' is +assumed. + +`-' + load and execute the standard input as a file, that is, not + interactively, even when the standard input is a terminal. .TP + +`-e EXPR' + evaluate expression EXPR. You need to quote EXPR if it contains + spaces, quotes, or other characters special to the shell. + +`-i' + enter interactive mode after SCRIPT is executed. + +`-l NAME' + evaluate `(load "name")' before SCRIPT is executed. Typically + used to do environment initialization. + +`-r NAME' + evaluate `(require "name")' before SCRIPT is executed. Typically + used to load libraries. + +`-v' + show version and copyright information. + + +2.4 Exit Status +=============== + +If the SCRIPT or `stdin' reach EOF or if there is no SCRIPT, +`EXIT_SUCCESS' is returned. If the ERROR-CONTINUATION is passed an +object during init, arguments or script evaluation `EXIT_FAILURE' is +returned. If the ROOT-CONTINUATION is passed an object, `klisp' tries +to convert the value passed to the ROOT-CONTINUATION to an exit status +as follows: + +`integer' + If the value is an integer it is used as exit status. + +`boolean' + If the value is a boolean then `EXIT_SUCCESS' is returned for `#t' + and `EXIT_FAILURE' for `#f'. + +`inert' + If the value is inert, then `EXIT_SUCCESS' is returned. + +`else' + In any other case `EXIT_FAILURE' is returned. + +2.5 Environment Variables +========================= + +The following environment variables affect the behaviour of `klisp' + +`KLISP_INIT' + A Kernel expression to be evaluated before any arguments to the + interpreter. To use an init file, just define KLISP_INIT to the + following form `(load "/path/to/init-file")' + +`KLISP_PATH' + A colon separated list of templates for controlling the search of + required files. Each template can use the char `?' to be replaced + by the required name at run-time. + + + +File: klisp.info, Node: Booleans, Next: Equivalence, Prev: Interpreter, Up: Top + +3 Booleans ********** The boolean data type consists of two values, which are called true and @@ -431,7 +555,7 @@ boolean type is encapsulated.  File: klisp.info, Node: Equivalence, Next: Symbols, Prev: Booleans, Up: Top -3 Equivalence +4 Equivalence ************* Kernel has two general-purpose equivalence predicates (whereas R5RS @@ -452,7 +576,7 @@ equivalence in the presence of mutation (`eq?').  File: klisp.info, Node: Symbols, Next: Control, Prev: Equivalence, Up: Top -4 Symbols +5 Symbols ********* Two symbols are eq? iff they have the same external representation. @@ -484,7 +608,7 @@ symbols with other external representations may be created.  File: klisp.info, Node: Control, Next: Pairs and lists, Prev: Symbols, Up: Top -5 Control +6 Control ********* The inert data type is provided for use with control combiners. It @@ -536,7 +660,7 @@ consists of a single immutable value, having external representation  File: klisp.info, Node: Pairs and lists, Next: Environments, Prev: Control, Up: Top -6 Pairs and lists +7 Pairs and lists ***************** A pair is an object that refers to two other objects, called its car @@ -877,7 +1001,7 @@ output using, modulo whitespace, external representation `(1 2 3)'.  File: klisp.info, Node: Environments, Next: Combiners, Prev: Pairs and lists, Up: Top -7 Environments +8 Environments ************** An environment consists of a set of bindings, and a list of zero or @@ -1047,7 +1171,8 @@ external representation `#ignore'. The ignore type is encapsulated. environment, then evaluates `<exp1>' as a tail context in the environment that must result from the first evaluation. - -- Operative: ($bindings-environment . <bindings>) + -- Operative: $bindings->environment ($bindings->environment . + <bindings>) `<bindings>' should be as described for `$let'. The following equivalence holds: @@ -1097,7 +1222,7 @@ external representation `#ignore'. The ignore type is encapsulated.  File: klisp.info, Node: Combiners, Next: Continuations, Prev: Environments, Up: Top -8 Combiners +9 Combiners *********** There are two types of combiners in Kernel, operative and applicative. @@ -1221,8 +1346,8 @@ combiners are `equal?' iff they are `eq?'.  File: klisp.info, Node: Continuations, Next: Encapsulations, Prev: Combiners, Up: Top -9 Continuations -*************** +10 Continuations +**************** A continuation is a plan for all future computation, parameterized by a value to be provided, and contingent on the states of all mutable data @@ -1360,7 +1485,7 @@ continuation type is encapsulated. (apply-continuation continuation object) == (apply (continuation->applicative continuation) object) - -- Operative: ($let/cc <symbol> . <objects>) + -- Operative: $let/cc ($let/cc <symbol> . <objects>) A child environment `e' of the dynamic environment is created, containing a binding of `<symbol>' to the continuation to which the result of the call to `$let/cc' should normally return; then, @@ -1394,7 +1519,7 @@ continuation type is encapsulated.  File: klisp.info, Node: Encapsulations, Next: Promises, Prev: Continuations, Up: Top -10 Encapsulations +11 Encapsulations ***************** An encapsulation is an object that refers to another object, called its @@ -1429,7 +1554,7 @@ immutable.  File: klisp.info, Node: Promises, Next: Keyed Variables, Prev: Encapsulations, Up: Top -11 Promises +12 Promises *********** A promise is an object that represents the potential to determine a @@ -1507,7 +1632,7 @@ may not be `eq?'. Two promises are `equal?' iff they are `eq?'.  File: klisp.info, Node: Keyed Variables, Next: Numbers, Prev: Promises, Up: Top -12 Keyed Variables +13 Keyed Variables ****************** A keyed variable is a device that associates a non-symbolic key (in the @@ -1516,7 +1641,7 @@ in which lookup occurs. Kernel provides two types of keyed variables: dynamic & static. Keyed Dynamic Variables use the dynamic extent as context and Keyed Static Variables use the dynamic environment. -12.1 Keyed Dynamic Variables +13.1 Keyed Dynamic Variables ============================ A keyed dynamic variable is a device that associates a non-symbolic key @@ -1541,7 +1666,7 @@ dynamic extent in which lookup occurs. call to `a' is not within the dynamic extent of any call to `b', an error is signaled. -12.2 Keyed Static Variables +13.2 Keyed Static Variables =========================== A keyed static variable is a device that binds data in an environment @@ -1568,7 +1693,7 @@ by a non-symbolic key, where the key is an accessor applicative.  File: klisp.info, Node: Numbers, Next: Strings, Prev: Keyed Variables, Up: Top -13 Numbers +14 Numbers ********** All numbers are immutable, and `equal?' iff `eq?'. The number type is @@ -1757,7 +1882,7 @@ floating point. No bounding or robustness info is kept. argument to either applicative has no primary value an error is signaled. - -- Applicative: (abs real) + -- Applicative: abs (abs real) Applicative `abs' returns the nonnegative real number with the same magnitude as `real'; that is, if `real' is nonnegative it returns `real', otherwise it returns the negation of `real'. @@ -1960,7 +2085,7 @@ floating point. No bounding or robustness info is kept.  File: klisp.info, Node: Strings, Next: Characters, Prev: Numbers, Up: Top -14 Strings +15 Strings ********** A string is an object that represent a sequence of characters (for now, @@ -2073,7 +2198,7 @@ compatibility with r5rs was preferred/simpler.  File: klisp.info, Node: Characters, Next: Ports, Prev: Strings, Up: Top -15 Characters +16 Characters ************* A character is an object that represents an ASCII character (for now, @@ -2137,7 +2262,7 @@ features defined here were taken mostly from r5rs scheme.  File: klisp.info, Node: Ports, Next: Alphabetical Index, Prev: Characters, Up: Top -16 Ports +17 Ports ******** A port is an object that mediates data from an input or to a @@ -2187,9 +2312,11 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- with-input-from-file: (with-input-from-file string combiner) - -- with-output-to-file: (with-output-to-file string combiner) - -- with-error-to-file: (with-error-to-file string combiner) + -- Applicative: with-input-from-file (with-input-from-file string + combiner) + -- Applicative: with-output-to-file (with-output-to-file string + combiner) + -- Applicative: with-error-to-file (with-error-to-file string combiner) These three applicatives open the file named in `string' for textual input or output, an invoke the binder of either the input-port, the output-port or the error-port keyed dynamic @@ -2202,9 +2329,9 @@ klisp and was taken from Scheme. SOURCE NOTE: The first two are enumerated in the Kernel report but the text is still missing. The third applicative is from Scheme. - -- get-current-input-port: (get-current-input-port) - -- get-current-output-port: (get-current-output-port) - -- get-current-error-port: (get-current-error-port) + -- Applicative: get-current-input-port (get-current-input-port) + -- Applicative: get-current-output-port (get-current-output-port) + -- Applicative: get-current-error-port (get-current-error-port) These are the accessors for the input-port, output-port, and error-port keyed dynamic variables repectively. @@ -2246,8 +2373,8 @@ klisp and was taken from Scheme. but the text is still missing. open-binary-output-file is from Scheme. - -- close-input-file: (close-input-file input-port) - -- close-output-file: (close-output-file output-port) + -- Applicative: close-input-file (close-input-file input-port) + -- Applicative: close-output-file (close-output-file output-port) These applicatives close the port argument, so that no more input/output may be performed on them, and the resources can be freed. If the port was already closed these applicatives have no @@ -2260,9 +2387,9 @@ klisp and was taken from Scheme. is still missing. There's probably a name error here. These should probably be called close-input-port & close-output-port. - -- close-input-port: (close-input-port input-port) - -- close-output-port: (close-output-port output-port) - -- close-port: (close-port port) + -- Applicative: close-input-port (close-input-port input-port) + -- Applicative: close-output-port (close-output-port output-port) + -- Applicative: close-port (close-port port) These applicatives close the port argument, so that no more input/output may be performed on them, and the resources can be freed. If the port was already closed these applicatives have no @@ -2290,7 +2417,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is enumerated in the Kernel report but the text is still missing. - -- write: (write object [textual-output-port]) + -- Applicative: write (write object [textual-output-port]) If the `port' optional argument is not specified, then the value of the `output-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2350,7 +2477,7 @@ klisp and was taken from Scheme. be changed to just `eof?', for consistency with the other primitive type predicates. - -- read-char: (read-char [textual-input-port]) + -- Applicative: read-char (read-char [textual-input-port]) If the `port' optional argument is not specified, then the value of the `input-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2361,7 +2488,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- peek-char: (peek-char [textual-input-port]) + -- Applicative: peek-char (peek-char [textual-input-port]) If the `port' optional argument is not specified, then the value of the `input-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2374,7 +2501,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- char-ready?: (char-ready? [textual-input-port]) + -- Applicative: char-ready? (char-ready? [textual-input-port]) If the `port' optional argument is not specified, then the value of the `input-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2387,7 +2514,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- write-char: (write-char char [textual-output-port]) + -- Applicative: write-char (write-char char [textual-output-port]) If the `port' optional argument is not specified, then the value of the `output-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2398,7 +2525,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- newline: (newline [textal-ouput-port]) + -- Applicative: newline (newline [textal-ouput-port]) If the `port' optional argument is not specified, then the value of the `output-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2408,7 +2535,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- display: (display object [textual-output-port]) + -- Applicative: display (display object [textual-output-port]) If the `port' optional argument is not specified, then the value of the `output-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2421,7 +2548,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- read-u8: (read-u8 [textual-input-port]) + -- Applicative: read-u8 (read-u8 [textual-input-port]) If the `port' optional argument is not specified, then the value of the `input-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2433,7 +2560,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- peek-u8: (peek-u8 [textual-input-port]) + -- Applicative: peek-u8 (peek-u8 [textual-input-port]) If the `port' optional argument is not specified, then the value of the `input-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2447,7 +2574,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- u8-ready?: (u8-ready? [textual-input-port]) + -- Applicative: u8-ready? (u8-ready? [textual-input-port]) If the `port' optional argument is not specified, then the value of the `input-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2460,7 +2587,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- write-u8: (write-u8 u8 [textual-output-port]) + -- Applicative: write-u8 (write-u8 u8 [textual-output-port]) If the `port' optional argument is not specified, then the value of the `output-port' keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -2472,7 +2599,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. - -- flush-output-port: (flush-output-port [output-port]) + -- Applicative: flush-output-port (flush-output-port [output-port]) If the `port' optional argument is not specified, then the value of the `output-port' keyed dynamic variable is used. If the `port' is closed or if it is not an output port, an error is @@ -2485,7 +2612,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from r7rs Scheme. - -- file-exists?: (file-exists? string) + -- Applicative: file-exists? (file-exists? string) `string' should be the name/path for a file. Predicate `file-exists?' checks to see if a file named `string' @@ -2494,7 +2621,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from r7rs Scheme. - -- delete-file: (delete-file string) + -- Applicative: delete-file (delete-file string) `string' should be the name/path for an existing file. Applicative `delete-file' deletes the file named `string'. If it @@ -2504,7 +2631,7 @@ klisp and was taken from Scheme. SOURCE NOTE: this is missing from Kernel, it is taken from r7rs Scheme. - -- rename-file: (rename-file string1 string2) + -- Applicative: rename-file (rename-file string1 string2) `string1' should be the name/path for an existing file, `string2' should be the name/path for a non existing file. @@ -2526,29 +2653,27 @@ Index * Menu: * $and?: Booleans. (line 28) +* $bindings->environment: Environments. (line 175) * $binds?: Environments. (line 108) * $cond: Control. (line 32) * $define!: Environments. (line 49) * $if: Control. (line 15) -* $import!: Environments. (line 207) +* $import!: Environments. (line 208) * $lambda: Combiners. (line 76) * $lazy: Promises. (line 43) * $let: Environments. (line 89) * $let*: Environments. (line 124) * $let-redirect: Environments. (line 153) * $let-safe: Environments. (line 161) +* $let/cc: Continuations. (line 143) * $letrec: Environments. (line 137) * $letrec*: Environments. (line 144) * $or?: Booleans. (line 41) -* $provide!: Environments. (line 191) +* $provide!: Environments. (line 192) * $remote-eval: Environments. (line 169) * $sequence: Control. (line 23) -* $set!: Environments. (line 182) +* $set!: Environments. (line 183) * $vau: Combiners. (line 26) -* ( <1>: Ports. (line 54) -* ( <2>: Numbers. (line 193) -* ( <3>: Continuations. (line 143) -* (: Environments. (line 174) * *: Numbers. (line 121) * +: Numbers. (line 109) * -: Numbers. (line 137) @@ -2558,6 +2683,7 @@ Index * =?: Numbers. (line 95) * >=?: Numbers. (line 103) * >?: Numbers. (line 102) +* abs: Numbers. (line 193) * acos: Numbers. (line 385) * and?: Booleans. (line 20) * append: Pairs and lists. (line 208) @@ -2589,8 +2715,8 @@ Index * cadddr: Pairs and lists. (line 108) * caddr: Pairs and lists. (line 96) * cadr: Pairs and lists. (line 90) -* call-with-input-file: Ports. (line 173) -* call-with-output-file: Ports. (line 175) +* call-with-input-file: Ports. (line 175) +* call-with-output-file: Ports. (line 177) * call/cc: Continuations. (line 43) * car: Pairs and lists. (line 85) * cdaaar: Pairs and lists. (line 109) @@ -2619,6 +2745,7 @@ Index * char-downcase: Characters. (line 49) * char-lower-case?: Characters. (line 44) * char-numeric?: Characters. (line 38) +* char-ready?: Ports. (line 243) * char-upcase: Characters. (line 48) * char-upper-case?: Characters. (line 43) * char-whitespace?: Characters. (line 39) @@ -2629,6 +2756,11 @@ Index * char>?: Characters. (line 24) * char?: Characters. (line 17) * characters: Characters. (line 6) +* close-input-file: Ports. (line 115) +* close-input-port: Ports. (line 129) +* close-output-file: Ports. (line 116) +* close-output-port: Ports. (line 130) +* close-port: Ports. (line 131) * combiner?: Combiners. (line 120) * combiners: Combiners. (line 6) * cons: Pairs and lists. (line 35) @@ -2640,9 +2772,11 @@ Index * copy-es-immutable!: Pairs and lists. (line 49) * cos: Numbers. (line 380) * countable-list?: Pairs and lists. (line 265) +* delete-file: Ports. (line 363) * denominator: Numbers. (line 315) * description format: Format of Descriptions. (line 6) +* display: Ports. (line 277) * div: Numbers. (line 149) * div-and-mod: Numbers. (line 151) * div0: Numbers. (line 163) @@ -2653,7 +2787,7 @@ Index * encycle!: Pairs and lists. (line 158) * environment?: Environments. (line 23) * environments: Environments. (line 6) -* eof-object?: Ports. (line 208) +* eof-object?: Ports. (line 210) * eq?: Equivalence. (line 12) * equal?: Equivalence. (line 16) * equivalence: Equivalence. (line 6) @@ -2667,10 +2801,12 @@ Index * exp: Numbers. (line 375) * expt: Numbers. (line 390) * extend-continuation: Continuations. (line 50) +* file-exists?: Ports. (line 354) * filter: Pairs and lists. (line 239) * finite-list?: Pairs and lists. (line 261) * finite?: Numbers. (line 75) * floor: Numbers. (line 324) +* flush-output-port: Ports. (line 341) * fonts: Some Terms. (line 13) * foo: A Sample Applicative Description. (line 15) @@ -2678,8 +2814,11 @@ Index * force: Promises. (line 35) * gcd: Numbers. (line 207) * get-current-environment: Environments. (line 114) +* get-current-error-port: Ports. (line 73) +* get-current-input-port: Ports. (line 71) +* get-current-output-port: Ports. (line 72) * get-list-metrics: Pairs and lists. (line 123) -* get-module: Ports. (line 198) +* get-module: Ports. (line 200) * get-real-exact-bounds: Numbers. (line 233) * get-real-exact-primary: Numbers. (line 252) * get-real-internal-bounds: Numbers. (line 232) @@ -2695,6 +2834,7 @@ Index * input-port?: Ports. (line 32) * integer->char: Characters. (line 59) * integer?: Numbers. (line 61) +* interpreter: Interpreter. (line 6) * Kernel history: Kernel History. (line 6) * keyed dynamic variables: Keyed Variables. (line 15) * keyed static variables: Keyed Variables. (line 40) @@ -2708,7 +2848,7 @@ Index * list-ref: Pairs and lists. (line 198) * list-tail: Pairs and lists. (line 147) * lists: Pairs and lists. (line 6) -* load: Ports. (line 185) +* load: Ports. (line 187) * log: Numbers. (line 376) * make-encapsulation-type: Encapsulations. (line 12) * make-environment: Environments. (line 36) @@ -2727,6 +2867,7 @@ Index * mod: Numbers. (line 150) * mod0: Numbers. (line 164) * negative?: Numbers. (line 178) +* newline: Ports. (line 267) * nil: Pairs and lists. (line 6) * not?: Booleans. (line 16) * null?: Pairs and lists. (line 31) @@ -2736,10 +2877,10 @@ Index * object descriptions: A Sample Applicative Description. (line 6) * odd?: Numbers. (line 185) -* open-binary-input-file: Ports. (line 79) -* open-binary-output-file: Ports. (line 94) -* open-input-file: Ports. (line 78) -* open-output-file: Ports. (line 92) +* open-binary-input-file: Ports. (line 81) +* open-binary-output-file: Ports. (line 96) +* open-input-file: Ports. (line 80) +* open-output-file: Ports. (line 94) * operative descriptions: A Sample Applicative Description. (line 6) * operative?: Combiners. (line 16) @@ -2748,6 +2889,8 @@ Index * output-port?: Ports. (line 33) * pair?: Pairs and lists. (line 27) * pairs: Pairs and lists. (line 6) +* peek-char: Ports. (line 230) +* peek-u8: Ports. (line 302) * port?: Ports. (line 28) * ports: Ports. (line 6) * positive?: Numbers. (line 177) @@ -2756,11 +2899,14 @@ Index * promises: Promises. (line 6) * rational?: Numbers. (line 66) * rationalize: Numbers. (line 340) -* read: Ports. (line 144) +* read: Ports. (line 146) +* read-char: Ports. (line 219) +* read-u8: Ports. (line 290) * real->exact: Numbers. (line 286) * real->inexact: Numbers. (line 285) * real?: Numbers. (line 71) * reduce: Pairs and lists. (line 270) +* rename-file: Ports. (line 373) * robust?: Numbers. (line 87) * root-continuation: Continuations. (line 104) * round: Numbers. (line 327) @@ -2798,43 +2944,53 @@ Index * tan: Numbers. (line 381) * textual-port?: Ports. (line 42) * truncate: Numbers. (line 326) +* u8-ready?: Ports. (line 316) * undefined?: Numbers. (line 91) * unwrap: Combiners. (line 72) +* with-error-to-file: Ports. (line 58) +* with-input-from-file: Ports. (line 55) +* with-output-to-file: Ports. (line 57) * with-strict-arithmetic: Numbers. (line 298) * wrap: Combiners. (line 68) +* write: Ports. (line 159) +* write-char: Ports. (line 256) +* write-u8: Ports. (line 329) * zero?: Numbers. (line 143)  Tag Table: Node: Top703 -Node: License2601 -Node: Introduction4283 -Node: Caveats7213 -Node: Kernel History7999 -Node: Conventions9444 -Node: Some Terms10115 -Node: Evaluation Notation10786 -Node: Printing Notation11807 -Node: Error Messages12283 -Node: Format of Descriptions12931 -Node: A Sample Applicative Description13495 -Node: Acknowledgements15258 -Node: Booleans15644 -Node: Equivalence18186 -Node: Symbols18979 -Node: Control20345 -Node: Pairs and lists22662 -Node: Environments39685 -Node: Combiners49892 -Node: Continuations55928 -Node: Encapsulations64461 -Node: Promises65914 -Node: Keyed Variables69837 -Node: Numbers72608 -Node: Strings92107 -Node: Characters97454 -Node: Ports100164 -Node: Alphabetical Index117768 +Node: License2663 +Node: Introduction4345 +Node: Caveats7278 +Node: Kernel History8064 +Node: Conventions9509 +Node: Some Terms10180 +Node: Evaluation Notation10851 +Node: Printing Notation11872 +Node: Error Messages12348 +Node: Format of Descriptions12996 +Node: A Sample Applicative Description13560 +Node: Acknowledgements15323 +Node: Interpreter15709 +Ref: Command Line Options18009 +Ref: Interpreter Exit Status18943 +Node: Booleans20167 +Node: Equivalence22708 +Node: Symbols23501 +Node: Control24867 +Node: Pairs and lists27184 +Node: Environments44207 +Node: Combiners54448 +Node: Continuations60484 +Node: Encapsulations69027 +Node: Promises70480 +Node: Keyed Variables74403 +Node: Numbers77174 +Node: Strings96677 +Node: Characters102024 +Node: Ports104734 +Node: Alphabetical Index122670  End Tag Table diff --git a/doc/src/Makefile b/doc/src/Makefile @@ -2,7 +2,7 @@ # some of this is from the elisp manual srcs = klisp.texi index.texi \ - intro.texi \ + intro.texi interpreter.texi \ booleans.texi equivalence.texi symbols.texi \ control.texi pairs_lists.texi \ environments.texi combiners.texi \ diff --git a/doc/src/booleans.texi b/doc/src/booleans.texi @@ -1,7 +1,7 @@ @c -*-texinfo-*- @setfilename ../src/booleans -@node Booleans, Equivalence, Introduction, Top +@node Booleans, Equivalence, Interpreter, Top @comment node-name, next, previous, up @chapter Booleans diff --git a/doc/src/continuations.texi b/doc/src/continuations.texi @@ -160,7 +160,7 @@ applies it as usual. @end example @end deffn -@deffn Operative ($let/cc <symbol> . <objects>) +@deffn Operative $let/cc ($let/cc <symbol> . <objects>) A child environment @code{e} of the dynamic environment is created, containing a binding of @code{<symbol>} to the continuation to which the result of the call to @code{$let/cc} should normally return; then, diff --git a/doc/src/environments.texi b/doc/src/environments.texi @@ -233,7 +233,7 @@ environment, then evaluates @code{<exp1>} as a tail context in the environment that must result from the first evaluation. @end deffn -@deffn Operative ($bindings-environment . <bindings>) +@deffn Operative $bindings->environment ($bindings->environment . <bindings>) @c TODO add xref to $let @code{<bindings>} should be as described for @code{$let}. diff --git a/doc/src/interpreter.texi b/doc/src/interpreter.texi @@ -0,0 +1,154 @@ +@c -*-texinfo-*- +@setfilename ../src/interpreter + +@node Interpreter, Booleans, Introduction, Top +@comment node-name, next, previous, up +@chapter Interpreter +@cindex interpreter + +This section describes the @command{klisp}, a Kernel Programming Language +stand-alone interpreter. + +@section Invocation +@command{klisp} is invoked like this: +@example +klisp [options] [script] +@end example + +@section Description +@command{klisp} is a stand-alone klisp interpreter for the Kernel +Programming Language. It loads and evaluates Kernel programs in +textual source form. @command{klisp} can be used as a batch +interpreter and also interactively. The given @code{options} +(@pxref{Command Line Options}) are evaluated and then the klisp +program in file @code{script} is loaded and evaluated. All +evaluations mentioned, including the initialization that is described +below, take place in the same (initially) standard environment. All +values that result from these evaluation are discarded, but if the +@code{root-continuation} or @code{error-continuation} are passed a +value, the evaluation of @code{options} is interrupted and +@command{klisp} terminates. +@xref{Interpreter Exit Status,,Exit Status}, for a description of the +exit status in each case. + +The string @code{script} together with all arguments are available as +a list of strings via the applicative @code{get-script-arguments}. If +these arguments contain spaces or other characters special to the +shell, then they should be quoted (but note that the quotes will be +removed by the shell). The complete command line, including the name +of the interpreter, options, the script, and its arguments are +available as a list of strings via the applicative +@code{get-interpreter-arguments}. + +At the very beginning, before even handling the command line, +@command{klisp} reads and evaluates the contents of the environment +variable @code{KLISP_INIT}, if it is defined. To use an init file, +just define @code{KLISP_INIT} to the following form: @code{(load +"/path/to/init-file")}. Notice that @command{klisp} expects exactly one +expression in @code{KLISP_INIT}, if it is defined. So it is an error +to have no expressions or more than one in @code{KLISP_INIT}. The +same is true of the argument to the @code{-e} option, as both are +implemented in terms of @code{string-eval}. +@c TODO add xref to string-eval + +In interactive mode, @command{klisp} prompts the user, reads +expressions from the standard input, and evaluates them as they are +read. The default prompt is "klisp> ". + +@anchor{Command Line Options} +@section Options +@c @cindex Command Line Options +@c TODO move this to an appendix +Options start with @option{-} and are described below. You can use +@option{--} to signal the end of options. If no arguments are given, +then @option{-v} @option{-i} is assumed when the standard input is a +terminal; otherwise, @option{-} is assumed. If no @var{script}, or +option @option{-e} or @code{-l} is given, @option{-i} is assumed. + +@table @option + +@item - +@c TODO implement option index @opindex - ... +@c cindex ... +load and execute the standard input as a file, +that is, +not interactively, +even when the standard input is a terminal. +.TP + +@item -e @var{expr} +@c @opindex -e ... +@c @cindex -e ... +evaluate expression @var{expr}. You need to quote @var{expr} if it +contains spaces, quotes, or other characters special to the shell. + +@item -i +@c @opindex -i ... +@c @cindex -i ... +enter interactive mode after @var{script} is executed. + +@item -l @var{name} +@c @opindex -l ... +@c @cindex -l ... +evaluate @code{(load "name")} before @var{script} is executed. +Typically used to do environment initialization. + +@item -r @var{name} +@c @opindex -r ... +@c @cindex -r ... +evaluate @code{(require "name")} before @var{script} is +executed. Typically used to load libraries. + +@item -v +@c @opindex -v ... +@c @cindex -v ... +show version and copyright information. + +@end table + +@c TODO move this to an appendix +@anchor{Interpreter Exit Status} +@section Exit Status +@c @cindex Exit Status +If the @var{script} or @file{stdin} reach @var{EOF} or if there is no +@var{script}, @code{EXIT_SUCCESS} is returned. If the +@var{error-continuation} is passed an object during init, arguments or script +evaluation @code{EXIT_FAILURE} is returned. If the +@var{root-continuation} is passed an object, @command{klisp} tries to +convert the value passed to the @var{root-continuation} to an exit +status as follows: + +@table @code + +@item integer +If the value is an integer it is used as exit status. + +@item boolean +If the value is a boolean then @code{EXIT_SUCCESS} is returned for +@code{#t} and @code{EXIT_FAILURE} for @code{#f}. + +@item inert +If the value is inert, then @code{EXIT_SUCCESS} is returned. + +@item else +In any other case @code{EXIT_FAILURE} is returned. +@end table + +@section Environment Variables +@c @cindex Interpreter Environment Variables + +The following environment variables affect the behaviour of @command{klisp} + +@table @env +@item KLISP_INIT +@c TODO index for env variables +A Kernel expression to be evaluated before any arguments to the +interpreter. To use an init file, just define @var{KLISP_INIT} to the +following form @code{(load "/path/to/init-file")} + +@item KLISP_PATH +A colon separated list of templates for controlling the search of +required files. Each template can use the char @code{?} to be +replaced by the required name at run-time. + +@end table diff --git a/doc/src/intro.texi b/doc/src/intro.texi @@ -42,7 +42,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @c next node should be types -@node Introduction, Booleans, License, Top +@node Introduction, Interpreter, License, Top @chapter Introduction klisp is an open source interpreter for the Kernel Programming diff --git a/doc/src/klisp.texi b/doc/src/klisp.texi @@ -94,6 +94,7 @@ permission is granted to copy it in whole or in part without fee. * License:: Conditions for copying and changing klisp. * Introduction:: Introduction and conventions used. @c TODO lisp types and other introductions +* Interpreter:: The klisp stand-alone interpreter * Booleans:: Booleans module features. * Equivalence:: Equivalence (under & up to) mutation modules features. * Symbols:: Symbols module features. @@ -120,6 +121,7 @@ permission is granted to copy it in whole or in part without fee. @end menu @include intro.texi +@include interpreter.texi @include booleans.texi @include equivalence.texi @include symbols.texi diff --git a/doc/src/numbers.texi b/doc/src/numbers.texi @@ -219,7 +219,7 @@ even. If any argument to either applicative has no primary value an error is signaled. @end deffn -@deffn Applicative (abs real) +@deffn Applicative abs (abs real) Applicative @code{abs} returns the nonnegative real number with the same magnitude as @code{real}; that is, if @code{real} is nonnegative it returns @code{real}, otherwise it returns the negation of diff --git a/doc/src/ports.texi b/doc/src/ports.texi @@ -56,9 +56,9 @@ its arguments is not a binary port. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn with-input-from-file (with-input-from-file string combiner) -@deffnx with-output-to-file (with-output-to-file string combiner) -@deffnx with-error-to-file (with-error-to-file string combiner) +@deffn Applicative with-input-from-file (with-input-from-file string combiner) +@deffnx Applicative with-output-to-file (with-output-to-file string combiner) +@deffnx Applicative with-error-to-file (with-error-to-file string combiner) @c add xref get-current-input-port/get-current-output-port These three applicatives open the file named in @code{string} for textual input or output, an invoke the binder of either the @@ -73,9 +73,9 @@ and @code{with-output-from-file} is inert. the text is still missing. The third applicative is from Scheme. @end deffn -@deffn get-current-input-port (get-current-input-port) -@deffnx get-current-output-port (get-current-output-port) -@deffnx get-current-error-port (get-current-error-port) +@deffn Applicative get-current-input-port (get-current-input-port) +@deffnx Applicative get-current-output-port (get-current-output-port) +@deffnx Applicative get-current-error-port (get-current-error-port) These are the accessors for the input-port, output-port, and error-port keyed dynamic variables repectively. @c add xref to with-input-from-file, etc @@ -120,8 +120,8 @@ be considered unspecified). the text is still missing. open-binary-output-file is from Scheme. @end deffn -@deffn close-input-file (close-input-file input-port) -@deffnx close-output-file (close-output-file output-port) +@deffn Applicative close-input-file (close-input-file input-port) +@deffnx Applicative close-output-file (close-output-file output-port) These applicatives close the port argument, so that no more input/output may be performed on them, and the resources can be freed. If the port was already closed these applicatives have no @@ -135,9 +135,9 @@ still missing. There's probably a name error here. These should probably be called close-input-port & close-output-port. @end deffn -@deffn close-input-port (close-input-port input-port) -@deffnx close-output-port (close-output-port output-port) -@deffnx close-port (close-port port) +@deffn Applicative close-input-port (close-input-port input-port) +@deffnx Applicative close-output-port (close-output-port output-port) +@deffnx Applicative close-port (close-port port) These applicatives close the port argument, so that no more input/output may be performed on them, and the resources can be freed. If the port was already closed these applicatives have no @@ -167,7 +167,7 @@ unspecified. still missing. @end deffn -@deffn write (write object [textual-output-port]) +@deffn Applicative write (write object [textual-output-port]) If the @code{port} optional argument is not specified, then the value of the @code{output-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -234,7 +234,7 @@ probably be changed to just @code{eof?}, for consistency with the other primitive type predicates. @end deffn -@deffn read-char (read-char [textual-input-port]) +@deffn Applicative read-char (read-char [textual-input-port]) If the @code{port} optional argument is not specified, then the value of the @code{input-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -246,7 +246,7 @@ an @code{eof} if the end of file was reached. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn peek-char (peek-char [textual-input-port]) +@deffn Applicative peek-char (peek-char [textual-input-port]) If the @code{port} optional argument is not specified, then the value of the @code{input-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -260,7 +260,7 @@ remains unchanged so that new call to @code{peek-char} or SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn char-ready? (char-ready? [textual-input-port]) +@deffn Applicative char-ready? (char-ready? [textual-input-port]) If the @code{port} optional argument is not specified, then the value of the @code{input-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -274,7 +274,7 @@ the code to do this is non-portable. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn write-char (write-char char [textual-output-port]) +@deffn Applicative write-char (write-char char [textual-output-port]) If the @code{port} optional argument is not specified, then the value of the @code{output-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -286,7 +286,7 @@ The result returned by @code{write-char} is inert. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn newline (newline [textal-ouput-port]) +@deffn Applicative newline (newline [textal-ouput-port]) If the @code{port} optional argument is not specified, then the value of the @code{output-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -297,7 +297,7 @@ The result returned by @code{newline} is inert. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn display (display object [textual-output-port]) +@deffn Applicative display (display object [textual-output-port]) If the @code{port} optional argument is not specified, then the value of the @code{output-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -311,7 +311,7 @@ within those strings and character objects are output as if by SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn read-u8 (read-u8 [textual-input-port]) +@deffn Applicative read-u8 (read-u8 [textual-input-port]) If the @code{port} optional argument is not specified, then the value of the @code{input-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -324,7 +324,7 @@ the end of file was reached. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn peek-u8 (peek-u8 [textual-input-port]) +@deffn Applicative peek-u8 (peek-u8 [textual-input-port]) If the @code{port} optional argument is not specified, then the value of the @code{input-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -339,7 +339,7 @@ same port return the same byte. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn u8-ready? (u8-ready? [textual-input-port]) +@deffn Applicative u8-ready? (u8-ready? [textual-input-port]) If the @code{port} optional argument is not specified, then the value of the @code{input-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -353,7 +353,7 @@ the code to do this is non-portable. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn write-u8 (write-u8 u8 [textual-output-port]) +@deffn Applicative write-u8 (write-u8 u8 [textual-output-port]) If the @code{port} optional argument is not specified, then the value of the @code{output-port} keyed dynamic variable is used. If the port is closed, an error is signaled. @@ -366,7 +366,7 @@ result returned by @code{write-u8} is inert. SOURCE NOTE: this is missing from Kernel, it is taken from Scheme. @end deffn -@deffn flush-output-port (flush-output-port [output-port]) +@deffn Applicative flush-output-port (flush-output-port [output-port]) If the @code{port} optional argument is not specified, then the value of the @code{output-port} keyed dynamic variable is used. If the @code{port} is closed or if it is not an output port, an error is @@ -379,7 +379,7 @@ output port to the underlying file or device. The result returned by SOURCE NOTE: this is missing from Kernel, it is taken from r7rs Scheme. @end deffn -@deffn file-exists? (file-exists? string) +@deffn Applicative file-exists? (file-exists? string) @code{string} should be the name/path for a file. Predicate @code{file-exists?} checks to see if a file named @@ -388,7 +388,7 @@ output port to the underlying file or device. The result returned by SOURCE NOTE: this is missing from Kernel, it is taken from r7rs Scheme. @end deffn -@deffn delete-file (delete-file string) +@deffn Applicative delete-file (delete-file string) @code{string} should be the name/path for an existing file. Applicative @code{delete-file} deletes the file named @code{string}. @@ -398,7 +398,7 @@ result returned by @code{delete-file} is inert. SOURCE NOTE: this is missing from Kernel, it is taken from r7rs Scheme. @end deffn -@deffn rename-file (rename-file string1 string2) +@deffn Applicative rename-file (rename-file string1 string2) @code{string1} should be the name/path for an existing file, @code{string2} should be the name/path for a non existing file.