summaryrefslogtreecommitdiffstats
path: root/scm.doc
blob: 2367bc0a5c425b8beea067f47cebbd436b365233 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330



SCM(Jan 4 2000)                                   SCM(Jan 4 2000)


NAME
       scm - a Scheme Language Interpreter

SYNOPSIS
       scm [-a kbytes ] [-muvqib] [--version] [--help]
       [[-]-no-init-file] [-p int ] [-r feature ] [-h feature ]
       [-d filename ] [-f filename ] [-l filename ]
       [-c expression ] [-e expression ] [-o dumpname ]
       [-- | - | -s] [ filename ] [ arguments ...  ]

DESCRIPTION
       Scm is a Scheme interpreter.

       Upon  startup scm loads the file specified by by the envi-
       ronment  variable  SCM_INIT_PATH  or  by   the   parameter
       IMPLINIT in the makefile (or scmfig.h) if SCM_INIT_PATH is
       not defined.  The makefiles attempt  to  set  IMPLINIT  to
       "Init.scm" in the source directory.

       Unless  the  option -no-init-file or --no-init-file occurs
       in the command line, "Init.scm" checks to see if there  is
       file  "ScmInit.scm"  in the path specified by the environ-
       ment variable HOME (or in the current directory if HOME is
       undefined).  If it finds such a file it is loaded.

       "Init.scm"  then looks for command input from one of three
       sources: From an option on the command line, from  a  file
       named on the command line, or from standard input.


OPTIONS
       The  options  are  processed in the order specified on the
       command line.

       -akbytes
            specifies that scm should allocate an  initial  heap-
            size of kbytes.  This option, if present, must be the
            first on the command line.

       -no-init-file
            Inhibits the loading of  "ScmInit.scm"  as  described
            above.

       -eexpression

       -cexpression
            specifies that the scheme expression expression is to
            be evaluated.  These options are inspired by perl and
            sh  respectively.  On Amiga systems the entire option
            and argument need to  be  enclosed  in  qoutes.   For
            instance "-e(newline)".

       -rfeature
            requires feature.  This will load a file from SLIB if



                                                                1





SCM(Jan 4 2000)                                   SCM(Jan 4 2000)


            that feature is not already supported.  If feature is
            2,  3,  4, or 5 scm will require the features necces-
            sary to support R2RS, R3RS, R4RS,  or  R5RS,  respec-
            tively.

       -hfeature
            provides feature.

       -lfilename

       -ffilename
            loads filename.  Scm will load the first (unoptioned)
            file named on the command line if no -c, -e, -f,  -l,
            or -s option preceeds it.

       -dfilename
            opens  (read-only)  the  extended relational database
            filename.  If filename contains initialization  code,
            it will be run when the database is opened.

       -odumpname
            saves  the current SCM session as the executable pro-
            gram dumpname.  This option works only in SCM  builds
            supporting dump.

            If  options appear on the command line after -o dump-
            name, then the saved session will continue with  pro-
            cessing  those options when it is invoked.  Otherwise
            the (new) command line is processed as usual when the
            saved image is invoked.

       -plevel
            sets  the  prolixity (verboseness) to level.  This is
            the same as the scm command (verobse level ).

       -v   (verbose mode) specifies that scm will print prompts,
            evaluation   times,  notice  of  loading  files,  and
            garbage collection statistics.  This is the  same  as
            -p3.

       -q   (quiet  mode)  specifies that scm will print no extra
            information.  This is the same as -p0.

       -m   specifies that  subsequent  loads,  evaluations,  and
            user interactions will be with R4RS macro capability.
            To use a specific R4RS macro implementation from SLIB
            (instead  of  SLIB's  default)  put  -r  macropackage
            before -m on the command line.

       -u   specifies that  subsequent  loads,  evaluations,  and
            user interactions will be without R4RS macro capabil-
            ity.  R4RS macro capability can be restored by a sub-
            sequent -m on the command line or from Scheme code.




                                                                2





SCM(Jan 4 2000)                                   SCM(Jan 4 2000)


       -i   specifies  that  scm  should run interactively.  That
            means that scm will not terminate until the (quit) or
            (exit)  command  is  given, even if there are errors.
            It also sets the prolixity level to 2 if it  is  less
            than  2.   This will print prompts, evaluation times,
            and notice of loading files.  The prolixity level can
            be set by subsequent options.  If scm is started from
            a tty, it will assume that it should  be  interactive
            unless given a subsequent -b option.

       -b   specifies  that  scm  should  run  non-interactively.
            That means that scm will terminate  after  processing
            the command line or if there are errors.

       -s   specifies,  by  analogy with sh, that further options
            are to be treated as program aguments.

       -    -- specifies that there are no more  options  on  the
            command line.

ENVIRONMENT VARIABLES
       SCM_INIT_PATH
            is  the pathname where scm will look for its initial-
            ization code.  The default is the file "Init.scm"  in
            the source directory.

       SCHEME_LIBRARY_PATH
            is the SLIB Scheme library directory.

       HOME is  the  directory where "Init.scm" will look for the
            user initialization file "ScmInit.scm".

SCHEME VARIABLES
       *argv*
            contains  the  list  of  arguments  to  the  program.
            *argv*  can  change during argument processing.  This
            list is suitable for  use  as  an  argument  to  SLIB
            getopt.

       *R4RS-macro*
            controls whether loading and interaction support R4RS
            macros.  Define this in "ScmInit.scm" or files speci-
            fied  on the command line.  This can be overridden by
            subsequent -m and -u options.

       *interactive*
            controls interactivity as explained for the -i and -b
            options.  Define this in "ScmInit.scm" or files spec-
            ified on the command line.  This can be overridden by
            subsequent -i and -b options.

EXAMPLES





                                                                3





SCM(Jan 4 2000)                                   SCM(Jan 4 2000)


       % scm foo.scm arg1 arg2 arg3
            Load and execute the contents of foo.scm.  Parameters
            arg1 arg2 and arg3 are  stored  in  the  global  list
            *argv*.

       % scm -f foo.scm arg1 arg2 arg3
            The same.

       % scm -s foo.scm arg1 arg2
            Set  *argv*  to  ("foo.scm"  "arg1" "arg2") and enter
            interactive session.

       % scm -e '(display (list-ref *argv* *optind*))' bar
            Print ``bar''

       % scm -rpretty-print -r format -i
            Load pretty-print and format  and  enter  interactive
            mode.

       % scm -r5
            Load  dynamic-wind, values, and R4RS macros and enter
            interactive (with macros) mode.

       % scm -r5 -r4
            Like  above  but  rev4-optional-procedures  are  also
            loaded.

FEATURES
       Runs  under  Amiga, Atari-ST, MacOS, MS-DOS, OS/2, NOS/VE,
       Unicos, VMS, Unix and similar systems.  Support for  ASCII
       and EBCDIC character sets.

       Conforms  to  Revised^5 Report on the Algorithmic Language
       Scheme and the IEEE P1178 specification.

       Support for SICP, R2RS, R3RS, and R4RS scheme code.

       Many Common Lisp functions: logand, logor, logxor, lognot,
       ash,   logcount,  integer-length,  bit-extract,  defmacro,
       macroexpand, macroexpand1, gentemp, defvar,  force-output,
       software-type,   get-decoded-time,  get-internal-run-time,
       get-internal-real-time,  delete-file,  rename-file,  copy-
       tree, acons, and eval.

       Char-code-limit,    most-positive-fixnum,   most-negative-
       fixnum,  and   internal-time-units-per-second   constants.
       *Features* and *load-pathname* variables.

       Arrays  and bit-vectors.  String ports and software emula-
       tion ports.  I/O extensions providing most of ANSI  C  and
       POSIX.1 facilities.

       User  definable  responses  to interrupts and errors, Pro-
       cess-syncronization primitives, String regular  expression



                                                                4





SCM(Jan 4 2000)                                   SCM(Jan 4 2000)


       matching, and the CURSES screen management package.

       Available  add-on packages including an interactive debug-
       ger, database, X-window graphics, BGI graphics, Motif, and
       Open-Windows packages.

       A  compiler  (HOBBIT,  available  separately)  and dynamic
       linking of compiled modules.

       Setable  levels  of  monitoring  and  timing   information
       printed  interactively (the `verbose' function).  Restart,
       quit, and exec.

FILES
       scm.texi
              Texinfo documentation of scm enhancements, internal
              representations,  and  how to extend or include scm
              in other programs.

AUTHORS
       Aubrey Jaffer (jaffer @ alum.mit.edu)
       Radey Shouman (shouman @ ne.mediaone.net)

BUGS
SEE ALSO
       The SCM home-page:
       http://swissnet.ai.mit.edu/~jaffer/SCM.html

       The Scheme specifications for details on  specific  proce-
       dures  (http://swissnet.ai.mit.edu/ftpdir/scheme-reports/)
       or

       IEEE Std 1178-1990,
       IEEE Standard for the Scheme Programming Language,
       Institute of Electrical and Electronic Engineers, Inc.,
       New York, NY, 1991

       Brian Harvey and Matthew Wright
       Simply Scheme: Introducing Computer Science_
       MIT Press, 1994 ISBN 0-262-08226-8

       R. Kent Dybvig, The Scheme Programming Language,
       Prentice-Hall Inc, Englewood Cliffs, New Jersey 07632, USA

       H. Abelson, G. J. Sussman, and J. Sussman,
       Structure and Interpretation of Computer Programs,
       The MIT Press, Cambridge, Massachusetts, USA










                                                                5