SIOD(1C)                                                              SIOD(1C)



NAME
       siod - small scheme interpreter (Scheme In One Defun).

SYNOPSIS
       siod [-sX] [-hX] [-iX] [-gX] [-oX] [-nX] [-eX] [-vX] [-lX] [-mX] [-vX]
       [filenames]

DESCRIPTION
       Siod is a very small scheme interpreter which can be used for
       interactive calculations, scripts, or included as a command interpreter
       or extension/macro language in other applications. See the
       documentation for interfacing requirements and how to add user-defined
       data types. The dash-style command line options may also be delimited
       by commas.


ARGUMENTS
       The arguments are files which are loaded from the current or SIOD_LIB
       directory, by usual default /usr/local/lib/siod. Or the symbol repl to
       cause entry into the read-eval-print-loop, or parenthetical expressions
       to be evaluated.


   COMMAND LINE OPTIONS
       -hXXXXX The XXXXX should be an integer, specifying the number of cons
               cells to allocate in the heap. The default is 100000:10. Or an
               integer followed by a colon, the number after which gives the
               maximum number of heaps to malloc with mark and sweep gc mode.

       -iXXXXX The XXXXX should be the name of an init file to load before
               going into the read/eval/print loop.

       -gX     The X is 1 for a stop and copy garbage collector, 0 for a mark
               and sweep one (the default).

       -oXXXXX The XXXXX should be an integer, specifying the size of the
               obarray (symbol hash table) to use. Defaults to 1000. Each
               array element is a list of symbols.

       -nXXXXX The XXXXX should be an integer, specifying the number of pre-
               cons numbers to create. The default is 100.

       -sXXXXX The XXXXX should be an integer, specifying the number of bytes
               of recursion on the machine (C-call frame) stack to allow. This
               may be changed while the programming is running, and is mainly
               a convenience for detecting defects in programs. Default
               200000.

       -eXXXXX The XXXXX is an expression to evaluate (after loading the init
               file, if any).  After evaluating the expression the program
               will exit.

       -lXXXXX The XXXXX is a library directory to use for the require
               procedure. defaults to the environment variable SIOD_LIB or
               /usr/local/lib/siod.

       -vXXXXX The XXXXX is an integer verboseness from 0 to 4. When used in
               scripts the most generally useful level is 0. Defaults to 4.

       -mXXXXX The XXXXX can be 0 (default) which has no effect, or 1, which
               causes the scheme procedure main, with no arguments to be
               invoked after all files are loaded, or 2, which does the same
               thing but prevents further arguments from being interpreted, or
               3, which will wrap special error handling around the call to
               main which is convenient for writing cgi scripts producing
               html. The environment may be obtained from the getenv procedure
               or the variable *env*. Arguments are found in *args*.

       -vXXXXX The XXXXX Is passed along to the siod argument processing,
               however if the value is greater than 0 a Content-type:
               text/plain header is generated immediately (except if the
               number is represented with a leading zero), which can be
               convenient for debugging WWW cgi scripts. For example:

               #!/usr/local/bin/siod -v0,-m2
               (define (main)
                 (writes nil "Hello World0))

               Which if invoked normally will result in

               %hello.scm
               Hello World

               And with the verbose flag over-ride on the command line:


               %hello.scm -v5
               Content-type: text/plain

               Welcome to SIOD, Scheme In One Defun, Version 3.1x 12-JUN-95
               (C) Copyright 1988-1994 Paradigm Associates Inc.
               10 heaps. size = 100000 cells, 2400000 bytes. 2048 inums. GC is mark and sweep
               loading hello.scm
               (define (main) (writes nil "Hello World
               "))
               done.
               Hello World
               EXIT


RETURN VALUE
       Errors during non-interactive usage mode result in a non-zero exit
       status.


ALTERNATIVE SYNTAX
       Files which are loaded by the interpreter may contain the sequence of
       characters parser:XXXXX in a comment in the first line of the file.
       This will result in the automatic loading of the file parser_XXXXX.scm
       which must provide a procedure parser_XXXXX to return a procedure to
       read the forms from the file to be loaded. Useful values of XXXXX
       include read, pratt, and fasl.


FILES
       /usr/local/lib/siod/* /usr/local/lib/siod/siod.html
       /usr/local/lib/libsiod.so

SEE ALSO
       command csiod

       Structure and Interpretation of Computer Programs , by Abelson and
       Sussman, MIT Press.


DIAGNOSTICS
       Error messages may also set the variable errobj to the offending
       object.

BUGS
       With -g1 it does not GC during EVAL, only before each READ/EVAL/PRINT
       cycle.  It does GC during EVAL with -g0, but that code may not run
       without modification on all architectures.

VERSION
       Current version is 3.2, 12-MAR-96, by George Carrette.
       GJC@world.std.com



                                     LOCAL                            SIOD(1C)
