klisp

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

commit 0204f40c6fc17b4256f2704525ee44018d81922f
parent e750fca6add13dc6bb05a995b18b09e096550329
Author: Andres Navarro <canavarro82@gmail.com>
Date:   Sat, 25 Feb 2012 20:56:27 -0300

Added bytevector section to the manual.

Diffstat:
MTODO | 1-
Mdoc/html/Alphabetical-Index.html | 75++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Adoc/html/Bytevectors.html | 187+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdoc/html/Libraries.html | 28++++++++++++++--------------
Mdoc/html/System.html | 26+++++++++++++-------------
Mdoc/html/Vectors.html | 6+++---
Mdoc/html/index.html | 1+
Mdoc/klisp.info | 222+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Mdoc/src/Makefile | 2+-
Adoc/src/bytevectors.texi | 140+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdoc/src/klisp.texi | 2++
Mdoc/src/libraries.texi | 2+-
Mdoc/src/vectors.texi | 2+-
13 files changed, 594 insertions(+), 100 deletions(-)

diff --git a/TODO b/TODO @@ -2,7 +2,6 @@ ** Documentation: *** update the manual with the current features **** Add missing sections -- bytevector - error ** Test *** Windows diff --git a/doc/html/Alphabetical-Index.html b/doc/html/Alphabetical-Index.html @@ -41,10 +41,10 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <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-110"><code>$define!</code></a>: <a href="Environments.html#Environments">Environments</a></li> <li><a href="Promises.html#index-g_t_0024delay-160"><code>$delay</code></a>: <a href="Promises.html#Promises">Promises</a></li> -<li><a href="Libraries.html#index-g_t_0024get_002dregistered_002dlibrary-376"><code>$get-registered-library</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-g_t_0024get_002dregistered_002dlibrary-395"><code>$get-registered-library</code></a>: <a href="Libraries.html#Libraries">Libraries</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-125"><code>$import!</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Libraries.html#index-g_t_0024import_002dlibrary_0021-380"><code>$import-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-g_t_0024import_002dlibrary_0021-399"><code>$import-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> <li><a href="Combiners.html#index-g_t_0024lambda-134"><code>$lambda</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> <li><a href="Promises.html#index-g_t_0024lazy-158"><code>$lazy</code></a>: <a href="Promises.html#Promises">Promises</a></li> <li><a href="Environments.html#index-g_t_0024let-111"><code>$let</code></a>: <a href="Environments.html#Environments">Environments</a></li> @@ -56,14 +56,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Environments.html#index-g_t_0024letrec_002a-117"><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-124"><code>$provide!</code></a>: <a href="Environments.html#Environments">Environments</a></li> -<li><a href="Libraries.html#index-g_t_0024provide_002dlibrary_0021-379"><code>$provide-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> -<li><a href="Libraries.html#index-g_t_0024register_002dlibrary_0021-377"><code>$register-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> -<li><a href="Libraries.html#index-g_t_0024registered_002dlibrary_003f-375"><code>$registered-library?</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-g_t_0024provide_002dlibrary_0021-398"><code>$provide-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-g_t_0024register_002dlibrary_0021-396"><code>$register-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-g_t_0024registered_002dlibrary_003f-394"><code>$registered-library?</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> <li><a href="Environments.html#index-g_t_0024remote_002deval-120"><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-123"><code>$set!</code></a>: <a href="Environments.html#Environments">Environments</a></li> <li><a href="Control.html#index-g_t_0024unless-38"><code>$unless</code></a>: <a href="Control.html#Control">Control</a></li> -<li><a href="Libraries.html#index-g_t_0024unregister_002dlibrary_0021-378"><code>$unregister-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-g_t_0024unregister_002dlibrary_0021-397"><code>$unregister-library!</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> <li><a href="Combiners.html#index-g_t_0024vau-131"><code>$vau</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> <li><a href="Control.html#index-g_t_0024when-37"><code>$when</code></a>: <a href="Control.html#Control">Control</a></li> <li><a href="Numbers.html#index-g_t_002a-184"><code>*</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> @@ -92,11 +92,25 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Ports.html#index-binary_002dport_003f-298"><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="Bytevectors.html#index-bytevector-378"><code>bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002d_003eimmutable_002dbytevector-388"><code>bytevector-&gt;immutable-bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002d_003elist-379"><code>bytevector-&gt;list</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Strings.html#index-bytevector_002d_003estring-261"><code>bytevector-&gt;string</code></a>: <a href="Strings.html#Strings">Strings</a></li> +<li><a href="Bytevectors.html#index-bytevector_002d_003evector-382"><code>bytevector-&gt;vector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Vectors.html#index-bytevector_002d_003evector-362"><code>bytevector-&gt;vector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dcopy-381"><code>bytevector-copy</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dcopy_0021-384"><code>bytevector-copy!</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dcopy_002dpartial-385"><code>bytevector-copy-partial</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dcopy_002dpartial_0021-386"><code>bytevector-copy-partial!</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dfill_0021-387"><code>bytevector-fill!</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Control.html#index-bytevector_002dfor_002deach-36"><code>bytevector-for-each</code></a>: <a href="Control.html#Control">Control</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dlength-375"><code>bytevector-length</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Combiners.html#index-bytevector_002dmap-139"><code>bytevector-map</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> <li><a href="Ports.html#index-bytevector_002dport_003f-301"><code>bytevector-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dref-376"><code>bytevector-ref</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_002dset_0021-377"><code>bytevector-set!</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-bytevector_003f-371"><code>bytevector?</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> +<li><a href="Bytevectors.html#index-Bytevectors-370">Bytevectors</a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Pairs-and-lists.html#index-caaaar-67"><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-68"><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-59"><code>caaar</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> @@ -173,8 +187,8 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Pairs-and-lists.html#index-copy_002des_002dimmutable_0021-50"><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-225"><code>cos</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Pairs-and-lists.html#index-countable_002dlist_003f-98"><code>countable-list?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="System.html#index-defined_002denvironment_002dvariable_003f-390"><code>defined-environment-variable?</code></a>: <a href="System.html#System">System</a></li> -<li><a href="System.html#index-delete_002dfile-386"><code>delete-file</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-defined_002denvironment_002dvariable_003f-409"><code>defined-environment-variable?</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-delete_002dfile-405"><code>delete-file</code></a>: <a href="System.html#System">System</a></li> <li><a href="Numbers.html#index-denominator-213"><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="Characters.html#index-digit_002d_003echar-292"><code>digit-&gt;char</code></a>: <a href="Characters.html#Characters">Characters</a></li> @@ -205,7 +219,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Numbers.html#index-exp-222"><code>exp</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Numbers.html#index-expt-221"><code>expt</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Continuations.html#index-extend_002dcontinuation-144"><code>extend-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> -<li><a href="System.html#index-file_002dexists-385"><code>file-exists</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-file_002dexists-404"><code>file-exists</code></a>: <a href="System.html#System">System</a></li> <li><a href="Ports.html#index-file_002dport_003f-299"><code>file-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Pairs-and-lists.html#index-filter-94"><code>filter</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="Ports.html#index-find_002drequired_002dfilename-347"><code>find-required-filename</code></a>: <a href="Ports.html#Ports">Ports</a></li> @@ -221,15 +235,15 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Environments.html#index-get_002dcurrent_002denvironment-113"><code>get-current-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> <li><a href="Ports.html#index-get_002dcurrent_002derror_002dport-308"><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-306"><code>get-current-input-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="System.html#index-get_002dcurrent_002djiffies-383"><code>get-current-jiffies</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-get_002dcurrent_002djiffies-402"><code>get-current-jiffies</code></a>: <a href="System.html#System">System</a></li> <li><a href="Ports.html#index-get_002dcurrent_002doutput_002dport-307"><code>get-current-output-port</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="System.html#index-get_002dcurrent_002dsecond-382"><code>get-current-second</code></a>: <a href="System.html#System">System</a></li> -<li><a href="System.html#index-get_002denvironment_002dvariable-391"><code>get-environment-variable</code></a>: <a href="System.html#System">System</a></li> -<li><a href="System.html#index-get_002denvironment_002dvariables-392"><code>get-environment-variables</code></a>: <a href="System.html#System">System</a></li> -<li><a href="System.html#index-get_002dinterpreter_002darguments-389"><code>get-interpreter-arguments</code></a>: <a href="System.html#System">System</a></li> -<li><a href="System.html#index-get_002djiffies_002dper_002dsecond-384"><code>get-jiffies-per-second</code></a>: <a href="System.html#System">System</a></li> -<li><a href="Libraries.html#index-get_002dlibrary_002denvironment-374"><code>get-library-environment</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> -<li><a href="Libraries.html#index-get_002dlibrary_002dexport_002dlist-373"><code>get-library-export-list</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="System.html#index-get_002dcurrent_002dsecond-401"><code>get-current-second</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-get_002denvironment_002dvariable-410"><code>get-environment-variable</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-get_002denvironment_002dvariables-411"><code>get-environment-variables</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-get_002dinterpreter_002darguments-408"><code>get-interpreter-arguments</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-get_002djiffies_002dper_002dsecond-403"><code>get-jiffies-per-second</code></a>: <a href="System.html#System">System</a></li> +<li><a href="Libraries.html#index-get_002dlibrary_002denvironment-393"><code>get-library-environment</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-get_002dlibrary_002dexport_002dlist-392"><code>get-library-export-list</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> <li><a href="Pairs-and-lists.html#index-get_002dlist_002dmetrics-86"><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-348"><code>get-module</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Ports.html#index-get_002doutput_002dbytevector-323"><code>get-output-bytevector</code></a>: <a href="Ports.html#Ports">Ports</a></li> @@ -238,12 +252,13 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Numbers.html#index-get_002dreal_002dexact_002dprimary-205"><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-202"><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-204"><code>get-real-internal-primary</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> -<li><a href="System.html#index-get_002dscript_002darguments-388"><code>get-script-arguments</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-get_002dscript_002darguments-407"><code>get-script-arguments</code></a>: <a href="System.html#System">System</a></li> <li><a href="Numbers.html#index-get_002dstring_002darithmetic-210"><code>get-string-arithmetic</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Continuations.html#index-guard_002dcontinuation-145"><code>guard-continuation</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> <li><a href="Continuations.html#index-guard_002ddynamic_002dextent-151"><code>guard-dynamic-extent</code></a>: <a href="Continuations.html#Continuations">Continuations</a></li> <li><a href="Environments.html#index-ignore-105">ignore</a>: <a href="Environments.html#Environments">Environments</a></li> <li><a href="Environments.html#index-ignore_003f-107"><code>ignore?</code></a>: <a href="Environments.html#Environments">Environments</a></li> +<li><a href="Bytevectors.html#index-immutable_002dbytevector_003f-372"><code>immutable-bytevector?</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Pairs-and-lists.html#index-immutable_002dpair_003f-45"><code>immutable-pair?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="Strings.html#index-immutable_002dstring_003f-234"><code>immutable-string?</code></a>: <a href="Strings.html#Strings">Strings</a></li> <li><a href="Vectors.html#index-immutable_002dvector_003f-351"><code>immutable-vector?</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> @@ -260,10 +275,11 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Keyed-Variables.html#index-keyed-variables-161">keyed variables</a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> <li><a href="Numbers.html#index-lcm-200"><code>lcm</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Pairs-and-lists.html#index-length-90"><code>length</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> -<li><a href="Libraries.html#index-libraries-370">libraries</a>: <a href="Libraries.html#Libraries">Libraries</a></li> -<li><a href="Libraries.html#index-library_003f-371"><code>library?</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-libraries-389">libraries</a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-library_003f-390"><code>library?</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> <li><a href="Pairs-and-lists.html#index-list-51"><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-52"><code>list*</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> +<li><a href="Bytevectors.html#index-list_002d_003ebytevector-380"><code>list-&gt;bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Strings.html#index-list_002d_003estring-257"><code>list-&gt;string</code></a>: <a href="Strings.html#Strings">Strings</a></li> <li><a href="Vectors.html#index-list_002d_003evector-359"><code>list-&gt;vector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> <li><a href="Pairs-and-lists.html#index-list_002dcopy-84"><code>list-copy</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> @@ -273,13 +289,14 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Pairs-and-lists.html#index-lists-42">lists</a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="Ports.html#index-load-342"><code>load</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Numbers.html#index-log-223"><code>log</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Bytevectors.html#index-make_002dbytevector-374"><code>make-bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Encapsulations.html#index-make_002dencapsulation_002dtype-154"><code>make-encapsulation-type</code></a>: <a href="Encapsulations.html#Encapsulations">Encapsulations</a></li> <li><a href="Environments.html#index-make_002denvironment-109"><code>make-environment</code></a>: <a href="Environments.html#Environments">Environments</a></li> <li><a href="Numbers.html#index-make_002dinexact-206"><code>make-inexact</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Environments.html#index-make_002dkernel_002dstandard_002denvironment-114"><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-163"><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-165"><code>make-keyed-static-variable</code></a>: <a href="Keyed-Variables.html#Keyed-Variables">Keyed Variables</a></li> -<li><a href="Libraries.html#index-make_002dlibrary-372"><code>make-library</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> +<li><a href="Libraries.html#index-make_002dlibrary-391"><code>make-library</code></a>: <a href="Libraries.html#Libraries">Libraries</a></li> <li><a href="Pairs-and-lists.html#index-make_002dlist-83"><code>make-list</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="Strings.html#index-make_002dstring-246"><code>make-string</code></a>: <a href="Strings.html#Strings">Strings</a></li> <li><a href="Vectors.html#index-make_002dvector-353"><code>make-vector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> @@ -292,6 +309,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Numbers.html#index-min-199"><code>min</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Numbers.html#index-mod-188"><code>mod</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Numbers.html#index-mod0-191"><code>mod0</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> +<li><a href="Bytevectors.html#index-mutable_002dbytevector_003f-373"><code>mutable-bytevector?</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Pairs-and-lists.html#index-mutable_002dpair_003f-46"><code>mutable-pair?</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="Strings.html#index-mutable_002dstring_003f-235"><code>mutable-string?</code></a>: <a href="Strings.html#Strings">Strings</a></li> <li><a href="Vectors.html#index-mutable_002dvector_003f-352"><code>mutable-vector?</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> @@ -342,7 +360,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Pairs-and-lists.html#index-reduce-99"><code>reduce</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="Ports.html#index-register_002drequirement_0021-345"><code>register-requirement!</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Ports.html#index-registered_002drequirement_003f-344"><code>registered-requirement?</code></a>: <a href="Ports.html#Ports">Ports</a></li> -<li><a href="System.html#index-rename_002dfile-387"><code>rename-file</code></a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-rename_002dfile-406"><code>rename-file</code></a>: <a href="System.html#System">System</a></li> <li><a href="Ports.html#index-require-343"><code>require</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Pairs-and-lists.html#index-reverse-85"><code>reverse</code></a>: <a href="Pairs-and-lists.html#Pairs-and-lists">Pairs and lists</a></li> <li><a href="Numbers.html#index-robust_003f-176"><code>robust?</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> @@ -390,7 +408,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <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="System.html#index-system-381">system</a>: <a href="System.html#System">System</a></li> +<li><a href="System.html#index-system-400">system</a>: <a href="System.html#System">System</a></li> <li><a href="Numbers.html#index-tan-226"><code>tan</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> <li><a href="Ports.html#index-textual_002dport_003f-297"><code>textual-port?</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Numbers.html#index-truncate-216"><code>truncate</code></a>: <a href="Numbers.html#Numbers">Numbers</a></li> @@ -400,6 +418,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <li><a href="Ports.html#index-unregister_002drequirement_0021-346"><code>unregister-requirement!</code></a>: <a href="Ports.html#Ports">Ports</a></li> <li><a href="Combiners.html#index-unwrap-133"><code>unwrap</code></a>: <a href="Combiners.html#Combiners">Combiners</a></li> <li><a href="Vectors.html#index-vector-357"><code>vector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> +<li><a href="Bytevectors.html#index-vector_002d_003ebytevector-383"><code>vector-&gt;bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li> <li><a href="Vectors.html#index-vector_002d_003ebytevector-361"><code>vector-&gt;bytevector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> <li><a href="Vectors.html#index-vector_002d_003eimmutable_002dvector-369"><code>vector-&gt;immutable-vector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> <li><a href="Vectors.html#index-vector_002d_003elist-358"><code>vector-&gt;list</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li> @@ -451,8 +470,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <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_Vectors">18 Vectors</a></li> -<li><a href="Alphabetical-Index.html#toc_Libraries">19 Libraries</a></li> -<li><a href="Alphabetical-Index.html#toc_System">20 System</a></li> +<li><a href="Alphabetical-Index.html#toc_Bytevectors">19 Bytevectors</a></li> +<li><a href="Alphabetical-Index.html#toc_Libraries">20 Libraries</a></li> +<li><a href="Alphabetical-Index.html#toc_System">21 System</a></li> <li><a href="Alphabetical-Index.html#toc_Alphabetical-Index">Index</a></li> </ul> </div> @@ -506,8 +526,9 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</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_Vectors" href="Vectors.html#Vectors">18 Vectors</a> -<li><a name="toc_Libraries" href="Libraries.html#Libraries">19 Libraries</a> -<li><a name="toc_System" href="System.html#System">20 System</a> +<li><a name="toc_Bytevectors" href="Bytevectors.html#Bytevectors">19 Bytevectors</a> +<li><a name="toc_Libraries" href="Libraries.html#Libraries">20 Libraries</a> +<li><a name="toc_System" href="System.html#System">21 System</a> <li><a name="toc_Alphabetical-Index" href="Alphabetical-Index.html#Alphabetical-Index">Index</a> </li></ul> </div> diff --git a/doc/html/Bytevectors.html b/doc/html/Bytevectors.html @@ -0,0 +1,187 @@ +<html lang="en"> +<head> +<title>Bytevectors - 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="Vectors.html#Vectors" title="Vectors"> +<link rel="next" href="Libraries.html#Libraries" title="Libraries"> +<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="Bytevectors"></a> +<p> +Next:&nbsp;<a rel="next" accesskey="n" href="Libraries.html#Libraries">Libraries</a>, +Previous:&nbsp;<a rel="previous" accesskey="p" href="Vectors.html#Vectors">Vectors</a>, +Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> +<hr> +</div> + +<!-- node-name, next, previous, up --> +<h2 class="chapter">19 Bytevectors</h2> + +<p><a name="index-Bytevectors-370"></a> +A bytevector is an object that contains a sequence of bytes, that is, +exact integers between 0 and 255 inclusive. A bytevector has a length +that is fixed at creation time, and as many bytes, indexed from +<code>0</code> to <code>length-1</code>. Compared to vectors, bytevectors use +less size for each element. + + <p>Bytevectors may be mutable or immutable. If an attempt is made to +mutate an immutable bytevector, an error is signaled. Two immutable +bytevectors are &ldquo;eq?&rdquo; iff they are &ldquo;equal?&rdquo;. Two mutable +bytevectors are &ldquo;eq?&rdquo; if they were created by the same constructor +call. Two mutable bytevectors are &ldquo;equal?&rdquo; iff they have the same +length and have &ldquo;equal?&rdquo; bytes in each position. There is only one +empty bytevector (that is, a bytevector of length 0) and that +bytevector is immutable. The bytevector type is encapsulated. + + <p>SOURCE NOTE: The report doesn't currently include bytevectors. They +are taken from r7rs scheme. + +<div class="defun"> +&mdash; Applicative: <b>bytevector?</b> (<var>bytevector? . obje</var>)<var><a name="index-bytevector_003f-371"></a></var><br> +<blockquote><p>The primitive type predicate for type bytevector. <code>bytevector?</code> +returns true iff all the objects in <code>objects</code> are of type +bytevector. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>immutable-bytevector?</b> (<var>immutable-bytevector? objects</var>)<var><a name="index-immutable_002dbytevector_003f-372"></a></var><br> +&mdash; Applicative: <b>mutable-bytevector?</b> (<var>mutable-bytevector? objects</var>)<var><a name="index-mutable_002dbytevector_003f-373"></a></var><br> +<blockquote><p>The primitive type predicates for types immutable bytevector and +mutable bytevector. These return true iff all the objects in +<code>objects</code> are of type immutable bytevector or mutable bytevector +respectively. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>make-bytevector</b> (<var>make-bytevector k </var>[<var>u8</var>])<var><a name="index-make_002dbytevector-374"></a></var><br> +<blockquote><p>Applicative <code>make-bytevector</code> constructs and returns a new +mutable bytevector of length <code>k</code>. If <code>u8</code> is specified, +then all bytes in the returned bytevector are <code>obj</code>, otherwise +the content of the bytevector is unspecified. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-length</b> (<var>bytevector-length bytevector</var>)<var><a name="index-bytevector_002dlength-375"></a></var><br> +<blockquote><p>Applicative <code>bytevector-length</code> returns the length of +<code>bytevector</code>. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-ref</b> (<var>bytevector-ref bytevector k</var>)<var><a name="index-bytevector_002dref-376"></a></var><br> +<blockquote><p>Applicative <code>bytevector-ref</code> returns the byte of +<code>bytevector</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>(bytevector-length bytevector)</code>) an error is signaled. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-set!</b> (<var>bytevector-set! bytevector k u8</var>)<var><a name="index-bytevector_002dset_0021-377"></a></var><br> +<blockquote><p>Applicative <code>bytevector-set!</code> replaces the byte with index +<code>k</code> in <code>bytevector</code> with byte <code>u8</code>. If <code>k</code> is out +of bounds, or <code>bytevector</code> is immutable, an error is +signaled. The result returned by <code>bytevector-set!</code> is inert. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector</b> (<var>bytevector . u8s</var>)<var><a name="index-bytevector-378"></a></var><br> +<blockquote><p>Applicative <code>bytevector</code> contructs and return a new mutable +bytevector composed of the byte arguments. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-&gt;list</b> (<var>bytevector-&gt;list bytevector</var>)<var><a name="index-bytevector_002d_003elist-379"></a></var><br> +&mdash; Applicative: <b>list-&gt;bytevector</b> (<var>list-&gt;bytevector u8s</var>)<var><a name="index-list_002d_003ebytevector-380"></a></var><br> +<blockquote><p>These applicatives convert between bytevectors and lists of bytes. If +the list passed to <code>list-&gt;bytevector</code> contains an object that +isn't a byte, an error is signaled. The objects returned by these +applicatives are always mutable. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-copy</b> (<var>bytevector-copy bytevector</var>)<var><a name="index-bytevector_002dcopy-381"></a></var><br> +<blockquote><p>Applicative <code>bytevector-copy</code> constructs and returns a new +mutable bytevector with the same length and bytes as +<code>bytevector</code>. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-&gt;vector</b> (<var>bytevector-&gt;vector bytevector</var>)<var><a name="index-bytevector_002d_003evector-382"></a></var><br> +&mdash; Applicative: <b>vector-&gt;bytevector</b> (<var>vector-&gt;bytevector vector</var>)<var><a name="index-vector_002d_003ebytevector-383"></a></var><br> +<blockquote><p>These applicatives convert between bytevectors and vectors. If a +vector containing objects other than bytes (exact integers between 0 +and 255 inclusive) is passed to <code>vector-&gt;bytevector</code>, an error is +signaled. The objects returned by these applicatives are always +mutable. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-copy!</b> (<var>bytevector-copy! bytevector1 bytevector2</var>)<var><a name="index-bytevector_002dcopy_0021-384"></a></var><br> +<blockquote><p>bytevector2 should have a length greater than or equal to that of +bytevector1. + + <p>Copies the bytes in bytevector1 to the corresponding positions in +bytevector2. If bytevector2 is immutable, an error is signaled. The +result returned by <code>bytevector-copy!</code> is inert. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-copy-partial</b> (<var>bytevector-copy-partial bytevector k1 k2</var>)<var><a name="index-bytevector_002dcopy_002dpartial-385"></a></var><br> +<blockquote><p>Both <code>k1</code> &amp; <code>k2</code> should be valid indexes in +<code>bytevector</code>. Also it should be the case that <code>k1 &lt;= k2</code>. + + <p>Applicative <code>bytevector-copy-partial</code> constructs and returns a +new mutable bytevector with length <code>k2 - k1</code>, with the bytes from +<code>bytevector</code>, starting at index <code>k1</code> (inclusive) and ending +at index <code>k2</code> (exclusive). +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-copy-partial!</b> (<var>bytevector-copy-partial! bytevector1 k1 k2 bytevector2 k3</var>)<var><a name="index-bytevector_002dcopy_002dpartial_0021-386"></a></var><br> +<blockquote><p>Both <code>k1</code> &amp; <code>k2-1</code> should be valid indexes in +<code>bytevector1</code>. Also it should be the case that <code>k1 &lt;= k2</code>. +Both <code>k3</code> &amp; <code>k3 + (k2-k1) - 1</code> should be valid indexes in +<code>bytevector2</code>. + + <p>Applicative <code>bytevector-copy-partial!</code> copies bytes k1 +(inclusive) through k2 (exclusive) from <code>bytevector1</code> to the +<code>k2-k1</code> positions in <code>bytevector2</code> starting at <code>k3</code>. +If <code>bytevector2</code> is an immutable bytevector, an error is +signaled. The result returned by <code>bytevector-copy-partial!</code> is +inert. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-fill!</b> (<var>bytevector-fill! bytevector u8</var>)<var><a name="index-bytevector_002dfill_0021-387"></a></var><br> +<blockquote><p>Applicative <code>bytevector-fill!</code> replaces all the bytes in +<code>bytevector</code> with byte <code>u8</code>. If <code>bytevector</code> is an +immutable bytevector, an error is signaled. The result +returned by <code>bytevector-fill!</code> is inert. +</p></blockquote></div> + +<div class="defun"> +&mdash; Applicative: <b>bytevector-&gt;immutable-bytevector</b> (<var>bytevector-&gt;immutable-bytevector bytevector</var>)<var><a name="index-bytevector_002d_003eimmutable_002dbytevector-388"></a></var><br> +<blockquote><p>Applicative <code>bytevector-&gt;immutable-bytevector</code> constructs and +returns a new immutable bytevector with the same length and bytes as +<code>bytevector</code>. +</p></blockquote></div> + +<!-- *-texinfo-*- --> + </body></html> + diff --git a/doc/html/Libraries.html b/doc/html/Libraries.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="Vectors.html#Vectors" title="Vectors"> +<link rel="prev" href="Bytevectors.html#Bytevectors" title="Bytevectors"> <link rel="next" href="System.html#System" title="System"> <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="Libraries"></a> <p> Next:&nbsp;<a rel="next" accesskey="n" href="System.html#System">System</a>, -Previous:&nbsp;<a rel="previous" accesskey="p" href="Vectors.html#Vectors">Vectors</a>, +Previous:&nbsp;<a rel="previous" accesskey="p" href="Bytevectors.html#Bytevectors">Bytevectors</a>, Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <hr> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">19 Libraries</h2> +<h2 class="chapter">20 Libraries</h2> -<p><a name="index-libraries-370"></a> +<p><a name="index-libraries-389"></a> Libraries provide a way to organize klisp code with a clean &amp; clear interface to the rest of the program. They are first class objects (as all manipulable entities in Kernel, and according to the @@ -78,7 +78,7 @@ doing things (first class status, exposing of the library register, etc). <div class="defun"> -&mdash; Applicative: <b>library?</b> (<var>library? . objects</var>)<var><a name="index-library_003f-371"></a></var><br> +&mdash; Applicative: <b>library?</b> (<var>library? . objects</var>)<var><a name="index-library_003f-390"></a></var><br> <blockquote><p>The primitive type predicate for type library. <code>library?</code> returns true iff all the objects in <code>objects</code> are of type library. @@ -89,7 +89,7 @@ API (i.e. <code>$provide-library!</code> &amp; <code>$import-library!</code>). </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>make-library</b> (<var>make-library bindings</var>)<var><a name="index-make_002dlibrary-372"></a></var><br> +&mdash; Applicative: <b>make-library</b> (<var>make-library bindings</var>)<var><a name="index-make_002dlibrary-391"></a></var><br> <blockquote><p><code>bindings</code> should be an acyclic list of <code>(symbol . value)</code> pairs. Each symbol may only occur once in the list. @@ -102,8 +102,8 @@ their libraries. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-library-export-list</b> (<var>get-library-export-list library</var>)<var><a name="index-get_002dlibrary_002dexport_002dlist-373"></a></var><br> -&mdash; Applicative: <b>get-library-environment</b> (<var>get-library-environment library</var>)<var><a name="index-get_002dlibrary_002denvironment-374"></a></var><br> +&mdash; Applicative: <b>get-library-export-list</b> (<var>get-library-export-list library</var>)<var><a name="index-get_002dlibrary_002dexport_002dlist-392"></a></var><br> +&mdash; Applicative: <b>get-library-environment</b> (<var>get-library-environment library</var>)<var><a name="index-get_002dlibrary_002denvironment-393"></a></var><br> <blockquote><p><code>get-library-export-list</code> returns the list of symbols exported from the passed library. <code>get-library-environment</code> returns a fresh empty environment whose parent has all exported symbols of the @@ -115,10 +115,10 @@ bindings out of libraries (and into the current environment). </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$registered-library?</b> (<var>$registered-library? name</var>)<var><a name="index-g_t_0024registered_002dlibrary_003f-375"></a></var><br> -&mdash; Operative: <b>$get-registered-library</b> (<var>$get-registered-library name</var>)<var><a name="index-g_t_0024get_002dregistered_002dlibrary-376"></a></var><br> -&mdash; Operative: <b>$register-library!</b> (<var>$register-library! name library</var>)<var><a name="index-g_t_0024register_002dlibrary_0021-377"></a></var><br> -&mdash; Operative: <b>$unregister-library!</b> (<var>$unregister-library! name</var>)<var><a name="index-g_t_0024unregister_002dlibrary_0021-378"></a></var><br> +&mdash; Operative: <b>$registered-library?</b> (<var>$registered-library? name</var>)<var><a name="index-g_t_0024registered_002dlibrary_003f-394"></a></var><br> +&mdash; Operative: <b>$get-registered-library</b> (<var>$get-registered-library name</var>)<var><a name="index-g_t_0024get_002dregistered_002dlibrary-395"></a></var><br> +&mdash; Operative: <b>$register-library!</b> (<var>$register-library! name library</var>)<var><a name="index-g_t_0024register_002dlibrary_0021-396"></a></var><br> +&mdash; Operative: <b>$unregister-library!</b> (<var>$unregister-library! name</var>)<var><a name="index-g_t_0024unregister_002dlibrary_0021-397"></a></var><br> <blockquote><p><code>name</code> should a an acyclic list of symbols and exact non-negative integers. Two registered libraries can't have the same name (in the sense of <code>equal?</code>). @@ -142,8 +142,8 @@ of libraries are encouraged to use <code>$provide-library!</code> to create </p></blockquote></div> <div class="defun"> -&mdash; Operative: <b>$provide-library!</b> (<var>$provide-library! name exports . body</var>)<var><a name="index-g_t_0024provide_002dlibrary_0021-379"></a></var><br> -&mdash; Operative: <b>$import-library!</b> (<var>$import-library! . imports</var>)<var><a name="index-g_t_0024import_002dlibrary_0021-380"></a></var><br> +&mdash; Operative: <b>$provide-library!</b> (<var>$provide-library! name exports . body</var>)<var><a name="index-g_t_0024provide_002dlibrary_0021-398"></a></var><br> +&mdash; Operative: <b>$import-library!</b> (<var>$import-library! . imports</var>)<var><a name="index-g_t_0024import_002dlibrary_0021-399"></a></var><br> <blockquote><p><code>name</code> should be as for <code>register-library!</code> and not already registered. <code>exports</code> should be a list of <code>(#:export &lt;export-spec&gt; ...)</code>. Where <code>&lt;export spec&gt;</code> is either: diff --git a/doc/html/System.html b/doc/html/System.html @@ -32,16 +32,16 @@ Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> </div> <!-- node-name, next, previous, up --> -<h2 class="chapter">20 System</h2> +<h2 class="chapter">21 System</h2> -<p><a name="index-system-381"></a> +<p><a name="index-system-400"></a> Module System contains some useful features for interacting with the host environment. <p>SOURCE NOTE: most of these come from r7rs. <div class="defun"> -&mdash; Applicative: <b>get-current-second</b> (<var>get-current-second</var>)<var><a name="index-get_002dcurrent_002dsecond-382"></a></var><br> +&mdash; Applicative: <b>get-current-second</b> (<var>get-current-second</var>)<var><a name="index-get_002dcurrent_002dsecond-401"></a></var><br> <blockquote><p>Applicative <code>get-current-second</code> returns the number of seconds elapsed since the UNIX/POSIX epoch (that is midnight January 1st, 1970, UTC). @@ -51,7 +51,7 @@ here. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-current-jiffies</b> (<var>get-current-jiffies</var>)<var><a name="index-get_002dcurrent_002djiffies-383"></a></var><br> +&mdash; Applicative: <b>get-current-jiffies</b> (<var>get-current-jiffies</var>)<var><a name="index-get_002dcurrent_002djiffies-402"></a></var><br> <blockquote><p>Applicative <code>get-current-jiffies</code> returns the number of jiffies (fractions of a second) elapsed since an arbitrary epoch that may change in each run of the klisp interpreter. Applicative @@ -60,19 +60,19 @@ of a second a jiffy represents. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-jiffies-per-second</b> (<var>get-jiffies-per-second</var>)<var><a name="index-get_002djiffies_002dper_002dsecond-384"></a></var><br> +&mdash; Applicative: <b>get-jiffies-per-second</b> (<var>get-jiffies-per-second</var>)<var><a name="index-get_002djiffies_002dper_002dsecond-403"></a></var><br> <blockquote><p>Applicative <code>get-jiffies-per-second</code> returns a constant representing the number of jiffies that correspond to one second. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>file-exists</b> (<var>file-exists string</var>)<var><a name="index-file_002dexists-385"></a></var><br> +&mdash; Applicative: <b>file-exists</b> (<var>file-exists string</var>)<var><a name="index-file_002dexists-404"></a></var><br> <blockquote><p>Predicate <code>file-exists?</code> checks to see if a file named <code>string</code> exists. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>delete-file</b> (<var>delete-file string</var>)<var><a name="index-delete_002dfile-386"></a></var><br> +&mdash; Applicative: <b>delete-file</b> (<var>delete-file string</var>)<var><a name="index-delete_002dfile-405"></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>. @@ -81,7 +81,7 @@ result returned by <code>delete-file</code> is inert. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>rename-file</b> (<var>rename-file string1 string2</var>)<var><a name="index-rename_002dfile-387"></a></var><br> +&mdash; Applicative: <b>rename-file</b> (<var>rename-file string1 string2</var>)<var><a name="index-rename_002dfile-406"></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. @@ -95,8 +95,8 @@ quite similar to <code>delete-file</code>. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-script-arguments</b> (<var>get-script-arguments</var>)<var><a name="index-get_002dscript_002darguments-388"></a></var><br> -&mdash; Applicative: <b>get-interpreter-arguments</b> (<var>get-interpreter-arguments</var>)<var><a name="index-get_002dinterpreter_002darguments-389"></a></var><br> +&mdash; Applicative: <b>get-script-arguments</b> (<var>get-script-arguments</var>)<var><a name="index-get_002dscript_002darguments-407"></a></var><br> +&mdash; Applicative: <b>get-interpreter-arguments</b> (<var>get-interpreter-arguments</var>)<var><a name="index-get_002dinterpreter_002darguments-408"></a></var><br> <blockquote><p>These applicatives return respectively the script and interpreter arguments. The script arguments are a list of the arguments passed to the klisp interpreter starting from (and including) the script name. @@ -107,20 +107,20 @@ name and arguments. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>defined-environment-variable?</b> (<var>defined-environment-variable? string</var>)<var><a name="index-defined_002denvironment_002dvariable_003f-390"></a></var><br> +&mdash; Applicative: <b>defined-environment-variable?</b> (<var>defined-environment-variable? string</var>)<var><a name="index-defined_002denvironment_002dvariable_003f-409"></a></var><br> <blockquote><p>Predicate <code>defined-environment-variable?</code> returns true iff <code>string</code> represents a defined envrionment variable. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-environment-variable</b> (<var>get-environment-variable string</var>)<var><a name="index-get_002denvironment_002dvariable-391"></a></var><br> +&mdash; Applicative: <b>get-environment-variable</b> (<var>get-environment-variable string</var>)<var><a name="index-get_002denvironment_002dvariable-410"></a></var><br> <blockquote><p>Applicative <code>get-environment-variable</code> returns the value of the environment variable represented by <code>string</code>. If <code>string</code> doesn't represent a defined environment variable an error is signaled. </p></blockquote></div> <div class="defun"> -&mdash; Applicative: <b>get-environment-variables</b> (<var>get-environment-variables</var>)<var><a name="index-get_002denvironment_002dvariables-392"></a></var><br> +&mdash; Applicative: <b>get-environment-variables</b> (<var>get-environment-variables</var>)<var><a name="index-get_002denvironment_002dvariables-411"></a></var><br> <blockquote><!-- TODO xref to alist --> <p>Applicative <code>get-environment-variable</code> returns an alist representing the defined environment variables and their values. The diff --git a/doc/html/Vectors.html b/doc/html/Vectors.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="Ports.html#Ports" title="Ports"> -<link rel="next" href="Libraries.html#Libraries" title="Libraries"> +<link rel="next" href="Bytevectors.html#Bytevectors" title="Bytevectors"> <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="Vectors"></a> <p> -Next:&nbsp;<a rel="next" accesskey="n" href="Libraries.html#Libraries">Libraries</a>, +Next:&nbsp;<a rel="next" accesskey="n" href="Bytevectors.html#Bytevectors">Bytevectors</a>, Previous:&nbsp;<a rel="previous" accesskey="p" href="Ports.html#Ports">Ports</a>, Up:&nbsp;<a rel="up" accesskey="u" href="index.html#Top">Top</a> <hr> @@ -133,7 +133,7 @@ mutable. &mdash; Applicative: <b>vector-&gt;string</b> (<var>vector-&gt;string vector</var>)<var><a name="index-vector_002d_003estring-363"></a></var><br> &mdash; Applicative: <b>string-&gt;vector</b> (<var>string-&gt;vector string</var>)<var><a name="index-string_002d_003evector-364"></a></var><br> <blockquote><p>These applicatives convert between vectors and strings. If a vector -containing objects other than characters is poassed to +containing objects other than characters is passed to <code>vector-&gt;string</code>, an error is signaled. The objects returned by these applicatives are always mutable. </p></blockquote></div> diff --git a/doc/html/index.html b/doc/html/index.html @@ -54,6 +54,7 @@ Up:&nbsp;<a rel="up" accesskey="u" href="../index.html#dir">(dir)</a> <li><a href="Characters.html#Characters">Characters</a>: Characters module features. <li><a href="Ports.html#Ports">Ports</a>: Ports module features. <li><a href="Vectors.html#Vectors">Vectors</a>: Vectors module features. +<li><a href="Bytevectors.html#Bytevectors">Bytevectors</a>: Bytevectors module features. <li><a href="Libraries.html#Libraries">Libraries</a>: Libraries module features. <li><a href="System.html#System">System</a>: System module features. <!-- TODO add error objs to both klisp and the manual --> diff --git a/doc/klisp.info b/doc/klisp.info @@ -57,6 +57,7 @@ the header "Permission to copy this report", that reads: * Characters:: Characters module features. * Ports:: Ports module features. * Vectors:: Vectors module features. +* Bytevectors:: Bytevectors module features. * Libraries:: Libraries module features. * System:: System module features. * Alphabetical Index:: Index including concepts, functions, variables, @@ -3029,7 +3030,7 @@ klisp and was taken from r7rs. binding symbol `module-parameters' to the `environment' argument.  -File: klisp.info, Node: Vectors, Next: Libraries, Prev: Ports, Up: Top +File: klisp.info, Node: Vectors, Next: Bytevectors, Prev: Ports, Up: Top 18 Vectors ********** @@ -3109,7 +3110,7 @@ taken from r7rs scheme. -- Applicative: vector->string (vector->string vector) -- Applicative: string->vector (string->vector string) These applicatives convert between vectors and strings. If a - vector containing objects other than characters is poassed to + vector containing objects other than characters is passed to `vector->string', an error is signaled. The objects returned by these applicatives are always mutable. @@ -3153,9 +3154,132 @@ taken from r7rs scheme. new immutable vector with the same length and objects as `vector'.  -File: klisp.info, Node: Libraries, Next: System, Prev: Vectors, Up: Top +File: klisp.info, Node: Bytevectors, Next: Libraries, Prev: Vectors, Up: Top -19 Libraries +19 Bytevectors +************** + +A bytevector is an object that contains a sequence of bytes, that is, +exact integers between 0 and 255 inclusive. A bytevector has a length +that is fixed at creation time, and as many bytes, indexed from `0' to +`length-1'. Compared to vectors, bytevectors use less size for each +element. + + Bytevectors may be mutable or immutable. If an attempt is made to +mutate an immutable bytevector, an error is signaled. Two immutable +bytevectors are "eq?" iff they are "equal?". Two mutable bytevectors +are "eq?" if they were created by the same constructor call. Two +mutable bytevectors are "equal?" iff they have the same length and have +"equal?" bytes in each position. There is only one empty bytevector +(that is, a bytevector of length 0) and that bytevector is immutable. +The bytevector type is encapsulated. + + SOURCE NOTE: The report doesn't currently include bytevectors. They +are taken from r7rs scheme. + + -- Applicative: bytevector? (bytevector? . obje) + The primitive type predicate for type bytevector. `bytevector?' + returns true iff all the objects in `objects' are of type + bytevector. + + -- Applicative: immutable-bytevector? (immutable-bytevector? objects) + -- Applicative: mutable-bytevector? (mutable-bytevector? objects) + The primitive type predicates for types immutable bytevector and + mutable bytevector. These return true iff all the objects in + `objects' are of type immutable bytevector or mutable bytevector + respectively. + + -- Applicative: make-bytevector (make-bytevector k [u8]) + Applicative `make-bytevector' constructs and returns a new mutable + bytevector of length `k'. If `u8' is specified, then all bytes in + the returned bytevector are `obj', otherwise the content of the + bytevector is unspecified. + + -- Applicative: bytevector-length (bytevector-length bytevector) + Applicative `bytevector-length' returns the length of `bytevector'. + + -- Applicative: bytevector-ref (bytevector-ref bytevector k) + Applicative `bytevector-ref' returns the byte of `bytevector' at + position `k'. If `k' is out of bounds (i.e. less than `0' or + greater or equal than `(bytevector-length bytevector)') an error + is signaled. + + -- Applicative: bytevector-set! (bytevector-set! bytevector k u8) + Applicative `bytevector-set!' replaces the byte with index `k' in + `bytevector' with byte `u8'. If `k' is out of bounds, or + `bytevector' is immutable, an error is signaled. The result + returned by `bytevector-set!' is inert. + + -- Applicative: bytevector (bytevector . u8s) + Applicative `bytevector' contructs and return a new mutable + bytevector composed of the byte arguments. + + -- Applicative: bytevector->list (bytevector->list bytevector) + -- Applicative: list->bytevector (list->bytevector u8s) + These applicatives convert between bytevectors and lists of bytes. + If the list passed to `list->bytevector' contains an object that + isn't a byte, an error is signaled. The objects returned by these + applicatives are always mutable. + + -- Applicative: bytevector-copy (bytevector-copy bytevector) + Applicative `bytevector-copy' constructs and returns a new mutable + bytevector with the same length and bytes as `bytevector'. + + -- Applicative: bytevector->vector (bytevector->vector bytevector) + -- Applicative: vector->bytevector (vector->bytevector vector) + These applicatives convert between bytevectors and vectors. If a + vector containing objects other than bytes (exact integers between + 0 and 255 inclusive) is passed to `vector->bytevector', an error is + signaled. The objects returned by these applicatives are always + mutable. + + -- Applicative: bytevector-copy! (bytevector-copy! bytevector1 + bytevector2) + bytevector2 should have a length greater than or equal to that of + bytevector1. + + Copies the bytes in bytevector1 to the corresponding positions in + bytevector2. If bytevector2 is immutable, an error is signaled. + The result returned by `bytevector-copy!' is inert. + + -- Applicative: bytevector-copy-partial (bytevector-copy-partial + bytevector k1 k2) + Both `k1' & `k2' should be valid indexes in `bytevector'. Also it + should be the case that `k1 <= k2'. + + Applicative `bytevector-copy-partial' constructs and returns a new + mutable bytevector with length `k2 - k1', with the bytes from + `bytevector', starting at index `k1' (inclusive) and ending at + index `k2' (exclusive). + + -- Applicative: bytevector-copy-partial! (bytevector-copy-partial! + bytevector1 k1 k2 bytevector2 k3) + Both `k1' & `k2-1' should be valid indexes in `bytevector1'. Also + it should be the case that `k1 <= k2'. Both `k3' & `k3 + (k2-k1) + - 1' should be valid indexes in `bytevector2'. + + Applicative `bytevector-copy-partial!' copies bytes k1 (inclusive) + through k2 (exclusive) from `bytevector1' to the `k2-k1' positions + in `bytevector2' starting at `k3'. If `bytevector2' is an + immutable bytevector, an error is signaled. The result returned + by `bytevector-copy-partial!' is inert. + + -- Applicative: bytevector-fill! (bytevector-fill! bytevector u8) + Applicative `bytevector-fill!' replaces all the bytes in + `bytevector' with byte `u8'. If `bytevector' is an immutable + bytevector, an error is signaled. The result returned by + `bytevector-fill!' is inert. + + -- Applicative: bytevector->immutable-bytevector + (bytevector->immutable-bytevector bytevector) + Applicative `bytevector->immutable-bytevector' constructs and + returns a new immutable bytevector with the same length and bytes + as `bytevector'. + + +File: klisp.info, Node: Libraries, Next: System, Prev: Bytevectors, Up: Top + +20 Libraries ************ Libraries provide a way to organize klisp code with a clean & clear @@ -3332,7 +3456,7 @@ things (first class status, exposing of the library register, etc).  File: klisp.info, Node: System, Next: Alphabetical Index, Prev: Libraries, Up: Top -20 System +21 System ********* Module System contains some useful features for interacting with the @@ -3476,11 +3600,25 @@ Index * binary-port?: Ports. (line 43) * boolean?: Booleans. (line 12) * booleans: Booleans. (line 6) +* bytevector: Bytevectors. (line 58) +* bytevector->immutable-bytevector: Bytevectors. (line 119) +* bytevector->list: Bytevectors. (line 62) * bytevector->string: Strings. (line 135) +* bytevector->vector <1>: Bytevectors. (line 73) * bytevector->vector: Vectors. (line 72) +* bytevector-copy: Bytevectors. (line 69) +* bytevector-copy!: Bytevectors. (line 82) +* bytevector-copy-partial: Bytevectors. (line 91) +* bytevector-copy-partial!: Bytevectors. (line 101) +* bytevector-fill!: Bytevectors. (line 112) * bytevector-for-each: Control. (line 56) +* bytevector-length: Bytevectors. (line 43) * bytevector-map: Combiners. (line 123) * bytevector-port?: Ports. (line 56) +* bytevector-ref: Bytevectors. (line 46) +* bytevector-set!: Bytevectors. (line 52) +* bytevector?: Bytevectors. (line 25) +* Bytevectors: Bytevectors. (line 6) * caaaar: Pairs and lists. (line 111) * caaadr: Pairs and lists. (line 112) * caaar: Pairs and lists. (line 103) @@ -3630,6 +3768,7 @@ Index * guard-dynamic-extent: Continuations. (line 156) * ignore: Environments. (line 6) * ignore?: Environments. (line 28) +* immutable-bytevector?: Bytevectors. (line 30) * immutable-pair?: Pairs and lists. (line 35) * immutable-string?: Strings. (line 51) * immutable-vector?: Vectors. (line 30) @@ -3650,6 +3789,7 @@ Index * library?: Libraries. (line 47) * list: Pairs and lists. (line 82) * list*: Pairs and lists. (line 88) +* list->bytevector: Bytevectors. (line 63) * list->string: Strings. (line 131) * list->vector: Vectors. (line 63) * list-copy: Pairs and lists. (line 142) @@ -3659,6 +3799,7 @@ Index * lists: Pairs and lists. (line 6) * load: Ports. (line 417) * log: Numbers. (line 403) +* make-bytevector: Bytevectors. (line 37) * make-encapsulation-type: Encapsulations. (line 12) * make-environment: Environments. (line 36) * make-inexact: Numbers. (line 285) @@ -3678,6 +3819,7 @@ Index * min: Numbers. (line 214) * mod: Numbers. (line 165) * mod0: Numbers. (line 179) +* mutable-bytevector?: Bytevectors. (line 31) * mutable-pair?: Pairs and lists. (line 36) * mutable-string?: Strings. (line 52) * mutable-vector?: Vectors. (line 31) @@ -3788,6 +3930,7 @@ Index * unregister-requirement!: Ports. (line 466) * unwrap: Combiners. (line 72) * vector: Vectors. (line 58) +* vector->bytevector <1>: Bytevectors. (line 74) * vector->bytevector: Vectors. (line 71) * vector->immutable-vector: Vectors. (line 121) * vector->list: Vectors. (line 62) @@ -3820,39 +3963,40 @@ Index  Tag Table: Node: Top703 -Node: License2823 -Node: Introduction4505 -Node: Caveats7438 -Node: Kernel History8224 -Node: Conventions9669 -Node: Some Terms10340 -Node: Evaluation Notation11011 -Node: Printing Notation12032 -Node: Error Messages12508 -Node: Format of Descriptions13156 -Node: A Sample Applicative Description13720 -Node: Acknowledgements15483 -Node: Interpreter15869 -Ref: Command Line Options18169 -Ref: Interpreter Exit Status19103 -Node: Booleans20331 -Node: Equivalence23008 -Node: Symbols23801 -Node: Control25431 -Node: Pairs and lists29522 -Node: Environments48402 -Node: Combiners59075 -Node: Continuations65729 -Node: Encapsulations74272 -Node: Promises75725 -Node: Keyed Variables79880 -Node: Numbers82651 -Node: Strings105105 -Node: Characters112378 -Node: Ports117024 -Node: Vectors140723 -Node: Libraries146476 -Node: System155237 -Node: Alphabetical Index158735 +Node: License2880 +Node: Introduction4562 +Node: Caveats7495 +Node: Kernel History8281 +Node: Conventions9726 +Node: Some Terms10397 +Node: Evaluation Notation11068 +Node: Printing Notation12089 +Node: Error Messages12565 +Node: Format of Descriptions13213 +Node: A Sample Applicative Description13777 +Node: Acknowledgements15540 +Node: Interpreter15926 +Ref: Command Line Options18226 +Ref: Interpreter Exit Status19160 +Node: Booleans20388 +Node: Equivalence23065 +Node: Symbols23858 +Node: Control25488 +Node: Pairs and lists29579 +Node: Environments48459 +Node: Combiners59132 +Node: Continuations65786 +Node: Encapsulations74329 +Node: Promises75782 +Node: Keyed Variables79937 +Node: Numbers82708 +Node: Strings105162 +Node: Characters112435 +Node: Ports117081 +Node: Vectors140780 +Node: Bytevectors146534 +Node: Libraries152356 +Node: System161121 +Node: Alphabetical Index164619  End Tag Table diff --git a/doc/src/Makefile b/doc/src/Makefile @@ -10,7 +10,7 @@ srcs = klisp.texi index.texi \ promises.texi keyed_vars.texi \ numbers.texi strings.texi \ characters.texi ports.texi \ - vectors.texi \ + vectors.texi bytevectors.texi \ libraries.texi system.texi #TODO add dvi/pdf output diff --git a/doc/src/bytevectors.texi b/doc/src/bytevectors.texi @@ -0,0 +1,140 @@ +@c -*-texinfo-*- +@setfilename ../src/bytevectors + +@node Bytevectors, Libraries, Vectors, Top +@comment node-name, next, previous, up + +@chapter Bytevectors +@cindex Bytevectors + +A bytevector is an object that contains a sequence of bytes, that is, +exact integers between 0 and 255 inclusive. A bytevector has a length +that is fixed at creation time, and as many bytes, indexed from +@code{0} to @code{length-1}. Compared to vectors, bytevectors use +less size for each element. + +Bytevectors may be mutable or immutable. If an attempt is made to +mutate an immutable bytevector, an error is signaled. Two immutable +bytevectors are ``eq?'' iff they are ``equal?''. Two mutable +bytevectors are ``eq?'' if they were created by the same constructor +call. Two mutable bytevectors are ``equal?'' iff they have the same +length and have ``equal?'' bytes in each position. There is only one +empty bytevector (that is, a bytevector of length 0) and that +bytevector is immutable. The bytevector type is encapsulated. + +SOURCE NOTE: The report doesn't currently include bytevectors. They +are taken from r7rs scheme. + +@deffn Applicative bytevector? (bytevector? . obje) +The primitive type predicate for type bytevector. @code{bytevector?} +returns true iff all the objects in @code{objects} are of type +bytevector. +@end deffn + +@deffn Applicative immutable-bytevector? (immutable-bytevector? objects) +@deffnx Applicative mutable-bytevector? (mutable-bytevector? objects) +The primitive type predicates for types immutable bytevector and +mutable bytevector. These return true iff all the objects in +@code{objects} are of type immutable bytevector or mutable bytevector +respectively. +@end deffn + +@deffn Applicative make-bytevector (make-bytevector k [u8]) +Applicative @code{make-bytevector} constructs and returns a new +mutable bytevector of length @code{k}. If @code{u8} is specified, +then all bytes in the returned bytevector are @code{obj}, otherwise +the content of the bytevector is unspecified. +@end deffn + +@deffn Applicative bytevector-length (bytevector-length bytevector) +Applicative @code{bytevector-length} returns the length of +@code{bytevector}. +@end deffn + +@deffn Applicative bytevector-ref (bytevector-ref bytevector k) +Applicative @code{bytevector-ref} returns the byte of +@code{bytevector} at position @code{k}. If @code{k} is out of bounds +(i.e. less than @code{0} or greater or equal than +@code{(bytevector-length bytevector)}) an error is signaled. +@end deffn + +@deffn Applicative bytevector-set! (bytevector-set! bytevector k u8) +Applicative @code{bytevector-set!} replaces the byte with index +@code{k} in @code{bytevector} with byte @code{u8}. If @code{k} is out +of bounds, or @code{bytevector} is immutable, an error is +signaled. The result returned by @code{bytevector-set!} is inert. +@end deffn + +@deffn Applicative bytevector (bytevector . u8s) +Applicative @code{bytevector} contructs and return a new mutable +bytevector composed of the byte arguments. +@end deffn + +@deffn Applicative bytevector->list (bytevector->list bytevector) +@deffnx Applicative list->bytevector (list->bytevector u8s) +These applicatives convert between bytevectors and lists of bytes. If +the list passed to @code{list->bytevector} contains an object that +isn't a byte, an error is signaled. The objects returned by these +applicatives are always mutable. +@end deffn + +@deffn Applicative bytevector-copy (bytevector-copy bytevector) +Applicative @code{bytevector-copy} constructs and returns a new +mutable bytevector with the same length and bytes as +@code{bytevector}. +@end deffn + +@deffn Applicative bytevector->vector (bytevector->vector bytevector) +@deffnx Applicative vector->bytevector (vector->bytevector vector) +These applicatives convert between bytevectors and vectors. If a +vector containing objects other than bytes (exact integers between 0 +and 255 inclusive) is passed to @code{vector->bytevector}, an error is +signaled. The objects returned by these applicatives are always +mutable. +@end deffn + +@deffn Applicative bytevector-copy! (bytevector-copy! bytevector1 bytevector2) +bytevector2 should have a length greater than or equal to that of +bytevector1. + +Copies the bytes in bytevector1 to the corresponding positions in +bytevector2. If bytevector2 is immutable, an error is signaled. The +result returned by @code{bytevector-copy!} is inert. +@end deffn + +@deffn Applicative bytevector-copy-partial (bytevector-copy-partial bytevector k1 k2) +Both @code{k1} & @code{k2} should be valid indexes in +@code{bytevector}. Also it should be the case that @code{k1 <= k2}. + +Applicative @code{bytevector-copy-partial} constructs and returns a +new mutable bytevector with length @code{k2 - k1}, with the bytes from +@code{bytevector}, starting at index @code{k1} (inclusive) and ending +at index @code{k2} (exclusive). +@end deffn + +@deffn Applicative bytevector-copy-partial! (bytevector-copy-partial! bytevector1 k1 k2 bytevector2 k3) +Both @code{k1} & @code{k2-1} should be valid indexes in +@code{bytevector1}. Also it should be the case that @code{k1 <= k2}. +Both @code{k3} & @code{k3 + (k2-k1) - 1} should be valid indexes in +@code{bytevector2}. + +Applicative @code{bytevector-copy-partial!} copies bytes k1 +(inclusive) through k2 (exclusive) from @code{bytevector1} to the +@code{k2-k1} positions in @code{bytevector2} starting at @code{k3}. +If @code{bytevector2} is an immutable bytevector, an error is +signaled. The result returned by @code{bytevector-copy-partial!} is +inert. +@end deffn + +@deffn Applicative bytevector-fill! (bytevector-fill! bytevector u8) +Applicative @code{bytevector-fill!} replaces all the bytes in +@code{bytevector} with byte @code{u8}. If @code{bytevector} is an +immutable bytevector, an error is signaled. The result +returned by @code{bytevector-fill!} is inert. +@end deffn + +@deffn Applicative bytevector->immutable-bytevector (bytevector->immutable-bytevector bytevector) +Applicative @code{bytevector->immutable-bytevector} constructs and +returns a new immutable bytevector with the same length and bytes as +@code{bytevector}. +@end deffn diff --git a/doc/src/klisp.texi b/doc/src/klisp.texi @@ -111,6 +111,7 @@ permission is granted to copy it in whole or in part without fee. * Characters:: Characters module features. * Ports:: Ports module features. * Vectors:: Vectors module features. +* Bytevectors:: Bytevectors module features. * Libraries:: Libraries module features. * System:: System module features. @c TODO add error objs to both klisp and the manual @@ -141,6 +142,7 @@ permission is granted to copy it in whole or in part without fee. @include characters.texi @include ports.texi @include vectors.texi +@include bytevectors.texi @include libraries.texi @include system.texi diff --git a/doc/src/libraries.texi b/doc/src/libraries.texi @@ -1,7 +1,7 @@ @c -*-texinfo-*- @setfilename ../src/libraries -@node Libraries, System, Vectors, Top +@node Libraries, System, Bytevectors, Top @comment node-name, next, previous, up @chapter Libraries diff --git a/doc/src/vectors.texi b/doc/src/vectors.texi @@ -1,7 +1,7 @@ @c -*-texinfo-*- @setfilename ../src/vectors -@node Vectors, Libraries, Ports, Top +@node Vectors, Bytevectors, Ports, Top @comment node-name, next, previous, up @chapter Vectors