aboutsummaryrefslogtreecommitdiffstats
path: root/scm.texi
diff options
context:
space:
mode:
Diffstat (limited to 'scm.texi')
-rw-r--r--scm.texi434
1 files changed, 319 insertions, 115 deletions
diff --git a/scm.texi b/scm.texi
index 2f87364..698bb6b 100644
--- a/scm.texi
+++ b/scm.texi
@@ -55,7 +55,7 @@ This manual documents the SCM Scheme implementation. SCM version
@value{SCMVERSION} was released @value{SCMDATE}. The most recent
information about SCM can be found on SCM's @dfn{WWW} home page:
-@center @url{http://swissnet.ai.mit.edu/~jaffer/SCM}
+@center @url{http://swiss.csail.mit.edu/~jaffer/SCM}
Copyright (C) 1990-1999 Free Software Foundation
@@ -105,9 +105,9 @@ The most recent information about SCM can be found on SCM's @dfn{WWW}
home page:
@ifset html
-<A HREF="http://swissnet.ai.mit.edu/~jaffer/SCM">
+<A HREF="http://swiss.csail.mit.edu/~jaffer/SCM">
@end ifset
-@center @url{http://swissnet.ai.mit.edu/~jaffer/SCM}
+@center @url{http://swiss.csail.mit.edu/~jaffer/SCM}
@ifset html
</A>
@end ifset
@@ -205,6 +205,58 @@ Authors have assigned their SCM copyrights to:
@center Free Software Foundation, Inc.
@center 59 Temple Place, Suite 330, Boston, MA 02111, USA
+@menu
+* The SCM License::
+* SIOD copyright::
+@end menu
+
+@node The SCM License, SIOD copyright, Copying, Copying
+@subsection The SCM License
+
+The license of SCM consists of the GNU GPL plus a special statement
+giving blanket permission to link with non-free software. This is the
+license statement as found in any individual file that it applies to:
+
+@quotation
+This program is free software; you can redistribute it and/or modify it
+under the terms of the GNU General Public License as published by the
+Free Software Foundation; either version 2, or (at your option) any
+later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this software; see the file COPYING. If not, write to the Free
+Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+02111-1307 USA
+
+As a special exception, the Free Software Foundation gives permission
+for additional uses of the text contained in its release of SCM.
+
+The exception is that, if you link the SCM library with other files to
+produce an executable, this does not by itself cause the resulting
+executable to be covered by the GNU General Public License. Your use of
+that executable is in no way restricted on account of linking the SCM
+library code into it.
+
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License.
+
+This exception applies only to the code released by the Free Software
+Foundation under the name SCM. If you copy code from other Free
+Software Foundation releases into a copy of SCM, as the General Public
+License permits, the exception does not apply to the code that you add
+in this way. To avoid misleading anyone as to the status of such
+modified files, you must delete this exception notice from them.
+
+If you write modifications of your own for SCM, it is your choice
+whether to permit this exception to apply to your modifications. If you
+do not wish that, delete this exception notice.
+@end quotation
+
@noindent
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee,
@@ -237,7 +289,8 @@ THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR
OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-@heading SIOD copyright
+@node SIOD copyright, , The SCM License, Copying
+@subsection SIOD copyright
@sp 1
@center COPYRIGHT (c) 1989 BY
@@ -451,7 +504,7 @@ proceed:
@itemize @bullet
@item
-Use the @uref{http://swissnet.ai.mit.edu/~jaffer/buildscm.html, build}
+Use the @uref{http://swiss.csail.mit.edu/~jaffer/buildscm.html, build}
web page to create custom batch scripts for compiling SCM.
@item
@@ -480,34 +533,34 @@ low priority. SLIB is available from the same sites as SCM:
@ifclear html
@itemize @bullet
@item
-swissnet.ai.mit.edu:/pub/scm/slib3a1.tar.gz
+swiss.csail.mit.edu:/pub/scm/slib3a2.tar.gz
@item
-ftp.gnu.org:/pub/gnu/jacal/slib3a1.tar.gz
+ftp.gnu.org:/pub/gnu/jacal/slib3a2.tar.gz
@item
-ftp.cs.indiana.edu:/pub/scheme-repository/imp/slib3a1.tar.gz
+ftp.cs.indiana.edu:/pub/scheme-repository/imp/slib3a2.tar.gz
@end itemize
@end ifclear
@ifset html
@itemize @bullet
@item
-<A HREF="http://swissnet.ai.mit.edu/ftpdir/scm/slib3a1.zip">
-http://swissnet.ai.mit.edu/ftpdir/scm/slib3a1.zip
+<A HREF="http://swiss.csail.mit.edu/ftpdir/scm/slib3a2.zip">
+http://swiss.csail.mit.edu/ftpdir/scm/slib3a2.zip
</A>
@item
-<A HREF="ftp://ftp.gnu.org/pub/gnu/jacal/slib3a1.tar.gz">
-ftp.gnu.org:/pub/gnu/jacal/slib3a1.tar.gz
+<A HREF="ftp://ftp.gnu.org/pub/gnu/jacal/slib3a2.tar.gz">
+ftp.gnu.org:/pub/gnu/jacal/slib3a2.tar.gz
</A>
@item
-<A HREF="ftp://ftp.cs.indiana.edu/pub/scheme-repository/code/lib/slib3a1.tar.gz">
-ftp.cs.indiana.edu:/pub/scheme-repository/code/lib/slib3a1.tar.gz
+<A HREF="ftp://ftp.cs.indiana.edu/pub/scheme-repository/code/lib/slib3a2.tar.gz">
+ftp.cs.indiana.edu:/pub/scheme-repository/code/lib/slib3a2.tar.gz
</A>
@end itemize
@end ifset
@noindent
-Unpack SLIB (@samp{tar xzf slib3a1.tar.gz} or @samp{unzip -ao
-slib3a1.zip}) in an appropriate directory for your system; both
+Unpack SLIB (@samp{tar xzf slib3a2.tar.gz} or @samp{unzip -ao
+slib3a2.zip}) in an appropriate directory for your system; both
@code{tar} and @code{unzip} will create the directory @file{slib}.
@noindent
@@ -635,7 +688,7 @@ the SCM command line options.
@deffn {Build Option} -p @var{platform-name}
@deffnx {Build Option} ---platform=@var{platform-name}
specifies that the compilation should be for a computer/operating-system
-combination called @var{platform-name}. @emph{Note:} The case of
+combination called @var{platform-name}. @emph{Note@:} The case of
@var{platform-name} is distinguised. The current @var{platform-name}s
are all lower-case.
@@ -663,9 +716,9 @@ Options for libscm.a.
@item pg.opt
Options for pgscm, which instruments C functions.
@item udscm4.opt
-Options for targets udscm4 and myscm4 (scm).
+Options for targets udscm4 and dscm4 (scm).
@item udscm5.opt
-Options for targets udscm5 and myscm5 (scm).
+Options for targets udscm5 and dscm5 (scm).
@end table
The Makefile creates options files it depends on only if they do not
@@ -1036,6 +1089,7 @@ __MSDOS__ Turbo C, Borland C, and DJGPP
__NetBSD__ NetBSD
nosve Control Data NOS/VE
SVR2 System V Revision 2.
+sun SunOS
__SVR4 SunOS
THINK_C developement environment for the Macintosh
ultrix VAX with ULTRIX operating system.
@@ -1248,13 +1302,14 @@ tracking effects of changes to SCM on performance.
@table @asis
@item Sparc(SUN-4) heap is growing out of control
-You are experiencing a GC problem peculiar to the Sparc. The problem is
-that SCM doesn't know how to clear register windows. Every location
-which is not reused still gets marked at GC time. This causes lots of
-stuff which should be collected to not be. This will be a problem with
-any @emph{conservative} GC until we find what instruction will clear the
-register windows. This problem is exacerbated by using lots of
-call-with-current-continuations.
+You are experiencing a GC problem peculiar to the Sparc. The problem
+is that SCM doesn't know how to clear register windows. Every
+location which is not reused still gets marked at GC time. This
+causes lots of stuff which should be collected to not be. This will
+be a problem with any @emph{conservative} GC until we find what
+instruction will clear the register windows. This problem is
+exacerbated by using lots of call-with-current-continuations.
+A possible fix for dynthrow() is commented out in @file{continue.c}.
@end table
@node Reporting Problems, , Testing, Installing SCM
@@ -1295,6 +1350,7 @@ vendor is recommended.
* SCM Session::
* Editing Scheme Code::
* Debugging Scheme Code::
+* Debugging Continuations::
* Errors::
* Memoized Expressions::
* Internal State::
@@ -1658,7 +1714,7 @@ After editing, the modified file will be loaded.
@end table
-@node Debugging Scheme Code, Errors, Editing Scheme Code, Operational Features
+@node Debugging Scheme Code, Debugging Continuations, Editing Scheme Code, Operational Features
@section Debugging Scheme Code
@noindent
@@ -1716,19 +1772,40 @@ a list of these formerly traced identifiers.
The routines I use most frequently for debugging are:
-@deffn Procedure print arg1 @dots{}
+@defun print arg1 @dots{}
@code{Print} writes all its arguments, separated by spaces.
@code{Print} outputs a @code{newline} at the end and returns the value
of the last argument.
-One can just insert @samp{(print '<proc-name>} and @samp{)} around an
-expression in order to see its value as a program operates.
+One can just insert @samp{(print '<label>} and @samp{)} around an
+expression in order to see its values as a program operates.
+@end defun
+
+@defun pprint arg1 @dots{}
+@code{Pprint} pretty-prints (@pxref{Pretty-Print, , , slib, SLIB}) all
+its arguments, separated by newlines. @code{Pprint} returns the value
+of the last argument.
+
+One can just insert @samp{(pprint '<label>} and @samp{)} around an
+expression in order to see its values as a program operates.
+@emph{Note@:} @code{pretty-print} does @emph{not} format procedures.
+@end defun
+
+@noindent
+When typing at top level, @code{pprint} is not a good way to see
+nested structure because it will return the last object
+pretty-printed, which could be large. @code{pp} is a better choice.
+
+@deffn Procedure pp arg1 @dots{}
+@code{Pprint} pretty-prints (@pxref{Pretty-Print, , , slib, SLIB}) all
+its arguments, separated by newlines. @code{pp} returns
+@code{#<unspecified>}.
@end deffn
-@deffn Syntax print-args name1 @dots{}
-Writes @var{name1} @dots{} (separated by spaces) and then writes the
-values of the closest lexical bindings enclosing the call to
-@code{Print-args}.
+@deffn Syntax print-args name
+@deffnx Syntax print-args
+Writes @var{name} if supplied; then writes the names and values of the
+closest lexical bindings enclosing the call to @code{Print-args}.
@example
(define (foo a b) (print-args foo) (+ a b))
@@ -1756,14 +1833,111 @@ offers source code debugging from
GNU Emacs. PSD runs slowly, so start by instrumenting only a few
functions at a time.
@lisp
-http://swissnet.ai.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz
-swissnet.ai.mit.edu:/pub/scm/slib-psd1-3.tar.gz
+http://swiss.csail.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz
+swiss.csail.mit.edu:/pub/scm/slib-psd1-3.tar.gz
ftp.maths.tcd.ie:pub/bosullvn/jacal/slib-psd1-3.tar.gz
ftp.cs.indiana.edu:/pub/scheme-repository/utl/slib-psd1-3.tar.gz
@end lisp
+@node Debugging Continuations, Errors, Debugging Scheme Code, Operational Features
+@section Debugging Continuations
+
+These functions are defined in @file{debug.c}, all operate on captured
+continuations:
+
+@deffn Procedure frame-trace cont n
+Prints information about the code being executed and the environment
+scopes active for continuation frame @var{n} of continuation CONT. A
+"continuation frame" is an entry in the environment stack; a new frame
+is pushed when the environment is replaced or extended in a non-tail
+call context. Frame 0 is the top of the stack.
+@end deffn
+
+@deffn Procedure frame->environment cont n
+Prints the environment for continuation frame @var{n} of continuation
+@var{cont}. This contains just the names, not the values, of the
+environment.
+@end deffn
+
+@deffn Procedure scope-trace env
+will print information about active lexical scopes for environment
+@var{env}.
+@end deffn
+
+@deffn Procedure frame-eval cont n expr
+Evaluates @var{expr} in the environment defined by continuation frame
+@var{n} of continuation CONT and returns the result. Values in the
+environment may be returned or SET!.
+@end deffn
-@node Errors, Memoized Expressions, Debugging Scheme Code, Operational Features
+@ref{Errors, stack-trace} also now accepts an optional continuation
+argument. @code{stack-trace} differs from @code{frame-trace} in that
+it truncates long output using safeports and prints code from all
+available frames.
+
+@example
+(define k #f)
+(define (foo x y)
+ (set! k (call-with-current-continuation identity))
+ #f)
+(let ((a 3) (b 4))
+ (foo a b)
+ #f)
+(stack-trace k)
+@print{}
+;STACK TRACE
+1; ((#@@set! #@@k (#@@call-with-current-continuation #@@identity)) #f ...
+2; (#@@let ((a 3) (b 4)) (#@@foo #@@a #@@b) #f)
+@dots{}
+#t
+@end example
+@example
+(frame-trace k 0)
+@print{}
+(#@@call-with-current-continuation #@@identity)
+; in scope:
+; (x y) procedure foo#<unspecified>
+@end example
+@example
+(frame-trace k 1)
+@print{}
+((#@@set! #@@k (#@@call-with-current-continuation #@@identity)) #f)
+; in scope:
+; (x y) procedure foo#<unspecified>
+@end example
+@example
+(frame-trace k 2)
+@print{}
+(#@@let ((a 3) (b 4)) (#@@foo #@@a #@@b) #f)
+; in scope:
+; (a b . #@@let)#<unspecified>
+@end example
+@example
+(frame-trace k 3)
+@print{}
+(#@@let ((a 3) (b 4)) (#@@foo #@@a #@@b) #f)
+; in top level environment.
+@end example
+@example
+(frame->environment k 0)
+@print{}
+((x y) 2 foo)
+@end example
+@example
+(scope-trace (frame->environment k 0))
+@print{}
+; in scope:
+; (x y) procedure foo#<unspecified>
+@end example
+@example
+(frame-eval k 0 'x) @result{} 3
+
+(frame-eval k 0 '(set! x 8))
+(frame-eval k 0 'x) @result{} 8
+@end example
+
+
+@node Errors, Memoized Expressions, Debugging Continuations, Operational Features
@section Errors
@noindent
@@ -1990,7 +2164,7 @@ Restarts the SCM program with the same arguments as it was originally
invoked. All @samp{-l} loaded files are loaded again; If those files
have changed, those changes will be reflected in the new session.
-@emph{Note:} When running a saved executable (@pxref{Dump}),
+@emph{Note@:} When running a saved executable (@pxref{Dump}),
@code{restart} is redefined to be @code{exec-self}.
@end defun
@@ -2137,7 +2311,7 @@ POSIX shell-scripts if the first line is:
The following Scheme-Script prints factorial of its argument:
@example
-#! /usr/local/bin/scm \ %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+#! /usr/local/bin/scm \ %0 %*
- !#
(define (fact.script args)
@@ -2191,13 +2365,13 @@ and MS-DOS. To implement this, I have written the MS-DOS programs:
@cindex #!
@cindex #!.bat
which are available from:
-@url{http://swissnet.ai.mit.edu/ftpdir/scm/sharpbang.zip}
+@url{http://swiss.csail.mit.edu/ftpdir/scm/sharpbang.zip}
@noindent
With these two programs installed in a @code{PATH} directory, we have
the following syntax for @var{<program>.BAT} files.
-@deftp file #! interpreter \ %0 %1 %2 %3 %4 %5 %6 %7 %8 %9
+@deftp file #! interpreter \ %0 %*
@tindex Scheme Script
@tindex Scheme-Script
@@ -2205,7 +2379,7 @@ The first two characters of the Scheme-Script are @samp{#!}. The
@var{interpreter} can be either a unix style program path (using
@samp{/} between filename components) or a DOS program name or path.
The rest of the first line of the Scheme-Script should be literally
-@w{@samp{\ %0 %1 %2 %3 %4 %5 %6 %7 %8 %9}}, as shown.
+@w{@samp{\ %0 %*}}, as shown.
If @var{interpreter} has @samp{/} in it, @var{interpreter} is converted
to a DOS style filename (@samp{/} @result{} @samp{\}).
@@ -2274,7 +2448,7 @@ example.
@example
#! /bin/sh
-:;exec scm -e"(set! *script* \"$0\")" -l$0 $*
+:;exec scm -e"(set! *script* \"$0\")" -l$0 "$@@"
(define (fact.script args)
(cond ((and (= 1 (length args))
@@ -2397,7 +2571,7 @@ Many of the optional features are supported as well.
@itemx source
See SLIB file @file{Template.scm}.
@item current-time
-@xref{Time, , , slib, SLIB}.
+@xref{Time and Date, , , slib, SLIB}.
@item defmacro
@xref{Defmacro, , , slib, SLIB}.
@item getenv
@@ -2530,8 +2704,8 @@ seconds.
@defun current-time
Returns the time since 00:00:00 GMT, January 1, 1970, measured in
-seconds. @xref{Time, current-time, , slib, SLIB}. @code{current-time} is
-used in @ref{Time, , , slib, SLIB}.
+seconds. @xref{Time and Date, current-time, , slib, SLIB}. @code{current-time} is
+used in @ref{Time and Date, , , slib, SLIB}.
@end defun
@node Interrupts, Process Synchronization, Time, The Language
@@ -2810,7 +2984,7 @@ not to hang. If the @var{port} is at end of file then
the value returned by @code{current-input-port}.
@findex current-input-port
-@emph{Rationale:} @code{Char-ready?} exists to make it possible for a
+@emph{Rationale@:} @code{Char-ready?} exists to make it possible for a
program to
@findex char-ready?
accept characters from interactive ports without getting stuck waiting
@@ -2878,9 +3052,9 @@ accepting or delivering characters. It allows emulation of I/O ports.
@defun make-soft-port vector modes
Returns a port capable of receiving or delivering characters as
-specified by the @var{modes} string (@pxref{Files and Ports,
-open-file}). @var{vector} must be a vector of length 6. Its components
-are as follows:
+specified by the @var{modes} string (@pxref{Files and Ports, open-file}).
+@var{vector} must be a vector of length 5. Its components are as
+follows:
@enumerate 0
@item
@@ -3198,7 +3372,7 @@ will be the value of @code{read} for this expression, otherwise an error
will be signaled.
@end deffn
-@emph{Note:} When adding new @key{#} syntaxes, have your code save the
+@emph{Note@:} When adding new @key{#} syntaxes, have your code save the
previous value of @code{load:sharp}, @code{read:sharp}, or
@code{char:sharp} when defining it. Call this saved value if an
invocation's syntax is not recognized. This will allow @code{#+},
@@ -3748,10 +3922,12 @@ both denote the same binding in the usage environment of the new syntax.
* I/O-Extensions:: i/o-extensions
* Posix Extensions:: posix
* Unix Extensions:: non-posix unix
+* Sequence Comparison::
* Regular Expression Pattern Matching:: regex
* Line Editing:: edit-line
* Curses:: Screen Control
* Sockets:: Cruise the Net
+* SCMDB:: interface to MySQL
@end menu
@cindex Xlib
@@ -3764,22 +3940,9 @@ both denote the same binding in the usage environment of the new syntax.
@cindex hobbit
@menu
* Xlib: (Xlibscm). X Window Graphics.
-* Hobbit: (hobbit). Scheme-to-C Compiler.
+* Hobbit: (hobbit). Scheme-to-C Compiler
@end menu
-@iftex
-@section hobbit
-
-@ifset html
-<A HREF="hobbit_toc.html">
-@code{(require 'compile)}
-
-@dfn{hobbit}
-</A>
-is a SCM->C compiler.
-@end ifset
-@end iftex
-
@node Dynamic Linking, Dump, Packages, Packages
@section Dynamic Linking
@@ -4123,19 +4286,14 @@ The following syntax and procedures are SCM extensions to feature
appear as lists (of lists) of elements. The lists must be nested to the
depth of the rank. For each depth, all lists must be the same length.
@example
-(create-array '#(ho) 4 3) @result{}
+(make-array '#(ho) 4 3) @result{}
#2A((ho ho ho) (ho ho ho) (ho ho ho) (ho ho ho))
@end example
-The rank may be elided, in which case it is read as one.
-@example
-'#A(a b c) @equiv{} '#(a b c)
-@end example
-
Unshared, conventional (not uniform) 0-based arrays of rank 1 are
equivalent to (and can't be distinguished from) scheme vectors.
@example
-(create-array '#(ho) 3) @result{} #(ho ho ho)
+(make-array '#(ho) 3) @result{} #(ho ho ho)
@end example
@defun transpose-array array dim0 dim1 @dots{}
@@ -4194,7 +4352,7 @@ In the case of a rank-0 array, returns the single element.
If @var{array} may be @dfn{unrolled} into a one dimensional shared
array without changing their order (last subscript changing fastest),
then @code{array-contents} returns that shared array, otherwise it
-returns @code{#f}. All arrays made by @var{create-array} may be
+returns @code{#f}. All arrays made by @var{make-array} may be
unrolled, some arrays made by @var{make-shared-array} may not be.
If the optional argument @var{strict} is provided, a shared array will
@@ -4213,13 +4371,13 @@ vectors. Uniform Array procedures also work on vectors,
uniform-vectors, bit-vectors, and strings.
SLIB now supports uniform arrys. The primary array creation procedure
-is @code{create-array}, detailed in @xref{Arrays, , , slib, SLIB}.
+is @code{make-array}, detailed in @xref{Arrays, , , slib, SLIB}.
@noindent
Unshared uniform character 0-based arrays of rank 1 (dimension)
are equivalent to (and can't be distinguished from) strings.
@example
-(create-array "" 3) @result{} "$q2"
+(make-array "" 3) @result{} "$q2"
@end example
@noindent
@@ -4227,9 +4385,7 @@ Unshared uniform boolean 0-based arrays of rank 1 (dimension) are
equivalent to (and can't be distinguished from) @ref{Bit Vectors,
bit-vectors}.
@example
-(create-array '#at() 3) @result{} #*000
-@equiv{}
-#At(#f #f #f) @result{} #*000
+(make-array '#1at() 3) @result{} #*000
@equiv{}
#1At(#f #f #f) @result{} #*000
@end example
@@ -4241,21 +4397,21 @@ according to the table:
@example
prototype type display prefix
-() conventional vector #a
-+64i complex (double precision) #ac64
-64.0 double (double precision) #ar64
-32.0 float (single precision) #ar32
-32 unsigned integer (32-bit) #au32
--32 signed integer (32-bit) #as32
--16 signed integer (16-bit) #as16
-#\a char (string) #a\
-#t boolean (bit-vector) #at
+() conventional vector #A
++64i complex (double precision) #A:floC64b
+64.0 double (double precision) #A:floR64b
+32.0 float (single precision) #A:floR32b
+32 unsigned integer (32-bit) #A:fixN32b
+-32 signed integer (32-bit) #A:fixZ32b
+-16 signed integer (16-bit) #A:fixZ16b
+#\a char (string) #A:char
+#t boolean (bit-vector) #A:bool
@end example
@noindent
Other uniform vectors are written in a form similar to that of general
arrays, except that one or more modifying characters are put between the
-#\A character and the contents list. For example, @code{'#As32(3 5 9)}
+#\A character and the contents list. For example, @code{'#1A:fixZ32b(3 5 9)}
returns a uniform vector of signed integers.
@defun array? obj prototype
@@ -4339,7 +4495,7 @@ Bit vectors can be written and read as a sequence of @code{0}s and
@code{1}s prefixed by @code{#*}.
@example
-#At(#f #f #f #t #f #t #f) @result{} #*0001010
+#1At(#f #f #f #t #f #t #f) @result{} #*0001010
@end example
@noindent
@@ -4347,7 +4503,7 @@ Some of these operations will eventually be generalized to other
uniform-arrays.
@defun bit-count bool bv
-Returns the number occurrences of @var{bool} in @var{bv}.
+Returns the number of occurrences of @var{bool} in @var{bv}.
@end defun
@defun bit-position bool bv k
@@ -4394,8 +4550,8 @@ Stores @var{fill} in every element of @var{array}. The value returned
is unspecified.
@end defun
-@defun serial-array-copy! source destination
-Same as @code{array-copy!} but guaranteed to copy in row-major order.
+@defun serial-array:copy! destination source
+Same as @code{array:copy!} but guaranteed to copy in row-major order.
@end defun
@defun array-equal? array0 array1 @dots{}
@@ -5045,7 +5201,7 @@ string containing the file name of termainal device; otherwise
@code{#f}.
@end defun
-@node Unix Extensions, Regular Expression Pattern Matching, Posix Extensions, Packages
+@node Unix Extensions, Sequence Comparison, Posix Extensions, Packages
@section Unix Extensions
@cindex Unix
@@ -5108,7 +5264,18 @@ writing is done. The value returned is unspecified.
@end defun
-@node Regular Expression Pattern Matching, Line Editing, Unix Extensions, Packages
+
+@node Sequence Comparison, Regular Expression Pattern Matching, Unix Extensions, Packages
+@section Sequence Comparison
+
+@code{(require 'diff)}
+@ftindex regex
+
+A blazing fast implementation of the sequence-comparison module in
+SLIB, see @xref{Sequence Comparison, , , slib, SLIB}.
+
+
+@node Regular Expression Pattern Matching, Line Editing, Sequence Comparison, Packages
@section Regular Expression Pattern Matching
These functions are defined in @file{rgx.c} using a POSIX or GNU
@@ -5195,7 +5362,7 @@ The string to be operated upon.
The character position at which to begin the search or match. If absent,
the default is zero.
-@exdent @emph{Compiled _GNU_SOURCE and using GNU libregex only:}
+@exdent @emph{Compiled _GNU_SOURCE and using GNU libregex only@:}
When searching, if @var{start} is negative, the absolute value of
@var{start} will be used as the start location and reverse searching
@@ -5371,7 +5538,7 @@ If enabled (@var{bf} is @code{#t}), @code{force-output} is called on the
window @var{win}, and then the physical terminal and window @var{win}
are scrolled up one line.
-@emph{Note:} in order to get the physical scrolling effect on the
+@emph{Note@:} in order to get the physical scrolling effect on the
terminal, it is also necessary to call @code{idlok}.
@end defun
@@ -5404,7 +5571,7 @@ inherited, therefore, a program should call @code{cbreak} or @code{nocbreak}
explicitly. Most interactive programs using curses will set @code{CBREAK}
mode.
-@emph{Note:} @code{cbreak} overrides @code{raw}. For a discussion of
+@emph{Note@:} @code{cbreak} overrides @code{raw}. For a discussion of
how these routines interact with @code{echo} and @code{noecho}
@xref{Input, read-char}.
@end defun
@@ -5558,7 +5725,7 @@ The intent here is that text, including attributes, can be copied from
one place to another using inch and display. See @code{standout},
below.
-@emph{Note:} For @code{wadd} @var{ch} can be an integer and will insert
+@emph{Note@:} For @code{wadd} @var{ch} can be an integer and will insert
the character of the corresponding value.
@end defun
@@ -5669,7 +5836,7 @@ and @var{horch} are the characters the box is to be drawn with. If
@var{vertch} and @var{horch} are 0, then appropriate default characters,
@code{ACS_VLINE} and @code{ACS_HLINE}, will be used.
-@emph{Note:} @var{vertch} and @var{horch} can be an integers and will
+@emph{Note@:} @var{vertch} and @var{horch} can be an integers and will
insert the character (with attributes) of the corresponding values.
@end defun
@@ -5680,7 +5847,7 @@ displayed in the @kbd{C-x} notation. Printing characters are displayed
as is.
@end defun
-@node Sockets, , Curses, Packages
+@node Sockets, SCMDB, Curses, Packages
@section Sockets
@noindent
@@ -6044,13 +6211,31 @@ or you can use a client written in scheme:
(newline)))
@end example
+@node SCMDB, , Sockets, Packages
+@section SCMDB
+
+@code{(require 'mysql)}
+
+@ifset html
+<A HREF="http://www.dedecker.net/jessie/scmdb/">
+@end ifset
+@dfn{SCMDB}
+@ifset html
+</A>
+@end ifset
+is an add-on for SCM that ports the MySQL C-library to SCM.
+@ifclear html
+
+It is available from:
+@url{http://www.dedecker.net/jessie/scmdb/}
+@end ifclear
+
@iftex
@section Xlibscm
+@code{(require 'Xlib)}
@ifset html
<A HREF="Xlibscm_toc.html">
-@code{(require 'Xlib)}
-
@dfn{Xlibscm}
</A>
is a SCM interface to the
@@ -6058,9 +6243,28 @@ is a SCM interface to the
@end ifset
@ifclear html
-@xref{Top, ,SCM Language X Interface , Xlibscm, Xlibscm}, for the SCM
+@xref{Top, ,SCM Language X Interface , Xlibscm, Xlibscm} for the SCM
interface to the @dfn{X Window System}.
@end ifclear
+
+@section Hobbit
+
+@code{(require 'hobbit)}
+
+@code{(require 'compile)}
+@ifset html
+<A HREF="hobbit_toc.html">
+@dfn{Hobbit}
+</A>
+is a small optimizing scheme-to-C compiler
+generating C modules for use with the SCM interpreter.
+@end ifset
+
+@ifclear html
+@xref{Top, , SCM Compiler, hobbit, hobbit} for a small optimizing
+scheme-to-C compiler for use with the SCM interpreter.
+
+@end ifclear
@end iftex
@@ -6730,7 +6934,7 @@ gloc PPPPPPPPPPPPPPPPPPPPPPPPPPPPP001}
@r{ HEAP CELL: G=gc_mark; 1 during mark, 0 other times.
1s and 0s here indicate type. G missing means sys (not GC'd)
- SIMPLE:}
+ SIMPLE@:}
@t{cons ..........SCM car..............0 ...........SCM cdr.............G
closure ..........SCM code...........011 ...........SCM env...........CCG
HEADERs:
@@ -6751,7 +6955,7 @@ cvect .........long length....G0110101 ........double *words...........
contin .........long length....G0111101 .............*regs..............
specfun ................xxxxxxxxG1111111 ...........SCM name.............
cclo ..short length..xxxxxx10G1111111 ...........SCM **elts...........}
-@r{ PTOBs:}
+@r{ PTOBs@:}
@t{ port int portnum.CwroxxxxxxxxG0110111 ..........FILE *stream..........
socket int portnum.C001xxxxxxxxG0110111 ..........FILE *stream..........
inport int portnum.C011xxxxxxxxG0110111 ..........FILE *stream..........
@@ -6761,7 +6965,7 @@ fport int portnum.C 00000000G0110111 ..........FILE *stream..........
pipe int portnum.C 00000001G0110111 ..........FILE *stream..........
strport 00000000000.0 00000010G0110111 ..........FILE *stream..........
sfport int portnum.C 00000011G0110111 ..........FILE *stream..........}
-@r{ SUBRs:}
+@r{ SUBRs@:}
@t{ spare 010001x1
spare 010011x1
subr_0 ..........int hpoff.....01010101 ...........SCM (*f)()...........
@@ -6775,7 +6979,7 @@ subr_2o ..........int hpoff.....01101111 ...........SCM (*f)()...........
lsubr_2 ..........int hpoff.....01110101 ...........SCM (*f)()...........
lsubr ..........int hpoff.....01110111 ...........SCM (*f)()...........
rpsubr ..........int hpoff.....01111101 ...........SCM (*f)()...........}
-@r{ SMOBs:}
+@r{ SMOBs@:}
@t{free_cell
000000000000000000000000G1111111 ...........*free_cell........000
flo 000000000000000000000001G1111111 ...........float num............
@@ -7257,7 +7461,7 @@ define a new @code{MAKISYM} in @file{scm.h} and increment
add a string with the new name in the corresponding place in
@code{isymnames} in @file{repl.c}.
@item
-add @code{case:} clause to @code{ceval()} near @code{i_quasiquote} (in
+add @code{case@:} clause to @code{ceval()} near @code{i_quasiquote} (in
@file{eval.c}).
@end enumerate
@@ -7351,7 +7555,7 @@ is a function of one argument of type @code{SCM} (the cell to mark) and
returns type @code{SCM} which will then be marked. If no further
objects need to be marked then return an immediate object such as
@code{BOOL_F}. The smob cell itself will already have been marked.
-@emph{Note:} This is different from SCM versions prior to 5c5. Only
+@emph{Note@:} This is different from SCM versions prior to 5c5. Only
additional data specific to a smob type need be marked by @code{smob.mark}.
2 functions are provided:
@@ -7776,7 +7980,7 @@ number is returned. If not, the @code{ASRTER} macro calls @code{wta}
with @var{num} and strings @var{pos} and @var{s_caller}. For a listing
of useful predefined @var{pos} macros, @xref{C Macros}.
-@emph{Note:} Inexact numbers are accepted only by @code{num2dbl},
+@emph{Note@:} Inexact numbers are accepted only by @code{num2dbl},
@code{num2long}, and @code{num2ulong} (for when @code{SCM} is compiled
without bignums). To convert inexact numbers to exact numbers,
@xref{Numerical operations, inexact->exact, , r5rs, Revised(5) Scheme}.
@@ -7797,7 +8001,7 @@ of storage of array @var{ra}. Note that if @var{ra} is a
shared-array, the strorage accessed this way may be much larger than
@var{ra}.
-@emph{Note:} While you use a pointer returned from @code{scm_addr} or
+@emph{Note@:} While you use a pointer returned from @code{scm_addr} or
@code{scm_base_addr} you must keep a pointer to the associated
@code{SCM} object in a stack allocated variable or GC-protected
location in order to assure that SCM does not reuse that storage
@@ -7882,7 +8086,7 @@ each @code{CONTINUATION} has size @code{sizeof CONTINUATION}.
Otherwise, all but @dfn{root} @code{CONTINUATION}s have additional
storage (immediately following) to contain a copy of part of the stack.
-@emph{Note:} On systems with nonlinear stack disciplines (multiple
+@emph{Note@:} On systems with nonlinear stack disciplines (multiple
stacks or non-contiguous stack frames) copying the stack will not work
properly. These systems need to #define @code{CHEAP_CONTINUATIONS} in
@file{scmfig.h}.
@@ -8189,7 +8393,7 @@ main (int argc, char **argv)
@end example
@quotation
-@strong{Note:} If the current process is executed using the
+@strong{Note@@:} If the current process is executed using the
@code{execve} call without passing the correct path name as argument 0,
@code{dld_find_executable (argv[0]) } will also fail to locate the
executable file.
@@ -8330,7 +8534,7 @@ PSECT_ATTR=the_heap,NOSHR,LCL
PSECT_ATTR=the_environment,NOSHR,LCL}
@end format
-@emph{Notice:} The @dfn{psect} (Program Section) attributes.
+@emph{Notice@:} The @dfn{psect} (Program Section) attributes.
@table @code
@item LCL
means to keep the name local to the shared library. You almost always
@@ -8368,7 +8572,7 @@ $LINK MAIN.OBJ,SYS$INPUT:/OPT
Note the definition of the @code{LISPRTL} logical name. Without such a
definition you will need to copy @file{LISPRTL.EXE} over to
-@file{SYS$SHARE:} (aka @file{SYS$LIBRARY:}) in order to invoke the main
+@file{SYS$SHARE@:} (aka @file{SYS$LIBRARY@:}) in order to invoke the main
program once it is linked.
@item