summaryrefslogtreecommitdiffstats
path: root/scm.doc
blob: 03488a52130cd5f83dda2dbf67e0f63b9e00420b (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(Dec 5 1998)                                   SCM(Dec 5 1998)


NAME
       scm - a Scheme Language Interpreter

SYNOPSIS
       scm  [-a  kbytes ] [-ibvqmu] [-p number ] [-c expression ]
       [-e expression ] [-f filename ] [-l filename ]  [-d  file-
       name  ]  [-r feature ] [-- | - | -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  occurs  in  the  command
       line,   "Init.scm"   checks   to  see  if  there  is  file
       "ScmInit.scm" in the path  specified  by  the  environment
       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
            that feature is not already supported.  If feature is



                                                                1





SCM(Dec 5 1998)                                   SCM(Dec 5 1998)


            2, 3, 4, or 5 scm will require the  features  necces-
            sary  to  support  R2RS, R3RS, R4RS, or R5RS, respec-
            tively.

       -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.

       -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.

       -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



                                                                2





SCM(Dec 5 1998)                                   SCM(Dec 5 1998)


            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
       % 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



                                                                3





SCM(Dec 5 1998)                                   SCM(Dec 5 1998)


            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
       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



                                                                4





SCM(Dec 5 1998)                                   SCM(Dec 5 1998)


              in other programs.

AUTHORS
       Aubrey Jaffer (jaffer @ ai.mit.edu)
       Radey Shouman (Radey.Shouman @ splashtech.com)

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