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:
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: <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: <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: <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->immutable-bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li>
+<li><a href="Bytevectors.html#index-bytevector_002d_003elist-379"><code>bytevector->list</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li>
<li><a href="Strings.html#index-bytevector_002d_003estring-261"><code>bytevector->string</code></a>: <a href="Strings.html#Strings">Strings</a></li>
+<li><a href="Bytevectors.html#index-bytevector_002d_003evector-382"><code>bytevector->vector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li>
<li><a href="Vectors.html#index-bytevector_002d_003evector-362"><code>bytevector->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: <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->char</code></a>: <a href="Characters.html#Characters">Characters</a></li>
@@ -205,7 +219,7 @@ Up: <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: <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: <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: <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->bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li>
<li><a href="Strings.html#index-list_002d_003estring-257"><code>list->string</code></a>: <a href="Strings.html#Strings">Strings</a></li>
<li><a href="Vectors.html#index-list_002d_003evector-359"><code>list->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: <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: <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: <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: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<li><a href="Symbols.html#index-symbol_002d_003estring-25"><code>symbol->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: <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->bytevector</code></a>: <a href="Bytevectors.html#Bytevectors">Bytevectors</a></li>
<li><a href="Vectors.html#index-vector_002d_003ebytevector-361"><code>vector->bytevector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li>
<li><a href="Vectors.html#index-vector_002d_003eimmutable_002dvector-369"><code>vector->immutable-vector</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li>
<li><a href="Vectors.html#index-vector_002d_003elist-358"><code>vector->list</code></a>: <a href="Vectors.html#Vectors">Vectors</a></li>
@@ -451,8 +470,9 @@ Up: <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: <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: <a rel="next" accesskey="n" href="Libraries.html#Libraries">Libraries</a>,
+Previous: <a rel="previous" accesskey="p" href="Vectors.html#Vectors">Vectors</a>,
+Up: <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 “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.
+
+ <p>SOURCE NOTE: The report doesn't currently include bytevectors. They
+are taken from r7rs scheme.
+
+<div class="defun">
+— 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">
+— Applicative: <b>immutable-bytevector?</b> (<var>immutable-bytevector? objects</var>)<var><a name="index-immutable_002dbytevector_003f-372"></a></var><br>
+— 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">
+— 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">
+— 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">
+— 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">
+— 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">
+— 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">
+— Applicative: <b>bytevector->list</b> (<var>bytevector->list bytevector</var>)<var><a name="index-bytevector_002d_003elist-379"></a></var><br>
+— Applicative: <b>list->bytevector</b> (<var>list->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->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">
+— 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">
+— Applicative: <b>bytevector->vector</b> (<var>bytevector->vector bytevector</var>)<var><a name="index-bytevector_002d_003evector-382"></a></var><br>
+— Applicative: <b>vector->bytevector</b> (<var>vector->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->bytevector</code>, an error is
+signaled. The objects returned by these applicatives are always
+mutable.
+</p></blockquote></div>
+
+<div class="defun">
+— 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">
+— 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> & <code>k2</code> should be valid indexes in
+<code>bytevector</code>. Also it should be the case that <code>k1 <= 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">
+— 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> & <code>k2-1</code> should be valid indexes in
+<code>bytevector1</code>. Also it should be the case that <code>k1 <= k2</code>.
+Both <code>k3</code> & <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">
+— 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">
+— Applicative: <b>bytevector->immutable-bytevector</b> (<var>bytevector->immutable-bytevector bytevector</var>)<var><a name="index-bytevector_002d_003eimmutable_002dbytevector-388"></a></var><br>
+<blockquote><p>Applicative <code>bytevector->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: <a rel="next" accesskey="n" href="System.html#System">System</a>,
-Previous: <a rel="previous" accesskey="p" href="Vectors.html#Vectors">Vectors</a>,
+Previous: <a rel="previous" accesskey="p" href="Bytevectors.html#Bytevectors">Bytevectors</a>,
Up: <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 & 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">
-— Applicative: <b>library?</b> (<var>library? . objects</var>)<var><a name="index-library_003f-371"></a></var><br>
+— 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> & <code>$import-library!</code>).
</p></blockquote></div>
<div class="defun">
-— Applicative: <b>make-library</b> (<var>make-library bindings</var>)<var><a name="index-make_002dlibrary-372"></a></var><br>
+— 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">
-— 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>
-— Applicative: <b>get-library-environment</b> (<var>get-library-environment library</var>)<var><a name="index-get_002dlibrary_002denvironment-374"></a></var><br>
+— 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>
+— 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">
-— Operative: <b>$registered-library?</b> (<var>$registered-library? name</var>)<var><a name="index-g_t_0024registered_002dlibrary_003f-375"></a></var><br>
-— 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>
-— Operative: <b>$register-library!</b> (<var>$register-library! name library</var>)<var><a name="index-g_t_0024register_002dlibrary_0021-377"></a></var><br>
-— Operative: <b>$unregister-library!</b> (<var>$unregister-library! name</var>)<var><a name="index-g_t_0024unregister_002dlibrary_0021-378"></a></var><br>
+— Operative: <b>$registered-library?</b> (<var>$registered-library? name</var>)<var><a name="index-g_t_0024registered_002dlibrary_003f-394"></a></var><br>
+— 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>
+— Operative: <b>$register-library!</b> (<var>$register-library! name library</var>)<var><a name="index-g_t_0024register_002dlibrary_0021-396"></a></var><br>
+— 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">
-— 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>
-— Operative: <b>$import-library!</b> (<var>$import-library! . imports</var>)<var><a name="index-g_t_0024import_002dlibrary_0021-380"></a></var><br>
+— 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>
+— 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
<export-spec> ...)</code>. Where <code><export spec></code> is either:
diff --git a/doc/html/System.html b/doc/html/System.html
@@ -32,16 +32,16 @@ Up: <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">
-— Applicative: <b>get-current-second</b> (<var>get-current-second</var>)<var><a name="index-get_002dcurrent_002dsecond-382"></a></var><br>
+— 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">
-— Applicative: <b>get-current-jiffies</b> (<var>get-current-jiffies</var>)<var><a name="index-get_002dcurrent_002djiffies-383"></a></var><br>
+— 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">
-— 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>
+— 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">
-— Applicative: <b>file-exists</b> (<var>file-exists string</var>)<var><a name="index-file_002dexists-385"></a></var><br>
+— 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">
-— Applicative: <b>delete-file</b> (<var>delete-file string</var>)<var><a name="index-delete_002dfile-386"></a></var><br>
+— 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">
-— Applicative: <b>rename-file</b> (<var>rename-file string1 string2</var>)<var><a name="index-rename_002dfile-387"></a></var><br>
+— 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">
-— Applicative: <b>get-script-arguments</b> (<var>get-script-arguments</var>)<var><a name="index-get_002dscript_002darguments-388"></a></var><br>
-— Applicative: <b>get-interpreter-arguments</b> (<var>get-interpreter-arguments</var>)<var><a name="index-get_002dinterpreter_002darguments-389"></a></var><br>
+— Applicative: <b>get-script-arguments</b> (<var>get-script-arguments</var>)<var><a name="index-get_002dscript_002darguments-407"></a></var><br>
+— 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">
-— Applicative: <b>defined-environment-variable?</b> (<var>defined-environment-variable? string</var>)<var><a name="index-defined_002denvironment_002dvariable_003f-390"></a></var><br>
+— 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">
-— Applicative: <b>get-environment-variable</b> (<var>get-environment-variable string</var>)<var><a name="index-get_002denvironment_002dvariable-391"></a></var><br>
+— 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">
-— Applicative: <b>get-environment-variables</b> (<var>get-environment-variables</var>)<var><a name="index-get_002denvironment_002dvariables-392"></a></var><br>
+— 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: <a rel="next" accesskey="n" href="Libraries.html#Libraries">Libraries</a>,
+Next: <a rel="next" accesskey="n" href="Bytevectors.html#Bytevectors">Bytevectors</a>,
Previous: <a rel="previous" accesskey="p" href="Ports.html#Ports">Ports</a>,
Up: <a rel="up" accesskey="u" href="index.html#Top">Top</a>
<hr>
@@ -133,7 +133,7 @@ mutable.
— Applicative: <b>vector->string</b> (<var>vector->string vector</var>)<var><a name="index-vector_002d_003estring-363"></a></var><br>
— Applicative: <b>string->vector</b> (<var>string->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->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: <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