MZSCHEME(1)

NAME
mzscheme - The PLT Scheme implementation

SYNOPSIS
mzscheme [ option ... ] [ argument ... ]

DESCRIPTION
MzScheme is the PLT Scheme implementation. It implements the language as described in the Revised^5 Report on the Algorithmic Language Scheme and adds numerous extensions.

MrEd embeds and extends MzScheme with a graphical user interface (GUI) toolbox.

DrScheme is the graphical development environment for creating MzScheme and MrEd applications.

STARTUP FILE AND EXPRESSION OPTIONS

-e expr, --eval expr
    Evaluates expr after MzScheme starts.

-f file, --load file
    Loads file after MzScheme starts.

-d file, --load-cd file
    Load/cds file after MzScheme starts.

-t file, --require file
    Requires file after MzScheme starts.

-F, --Load
    Loads all remaining arguments after MzScheme starts.

-D, --Load-cd
    Load/cds all remaining arguments after MzScheme starts.

-T, --Require
    Requires all remaining arguments after MzScheme starts.

-l file, --mzlib file
    Same as -e '(require (lib " file "))'.

-L file coll
    Same as -e '(require (lib " file " "coll "))'.

-M coll
    Same as -e '(require (lib " coll .ss" "coll "))'.

-r, --script
    Script mode: use as last flag for scripts. Same as -fmv-.

-i, --script-cd
    Like -r, but also sets the directory. Same as -dmv-.

-u, --require-script
    Like -r, but requires a module. Same as -tmv-.

-w, --awk
    Same as -l awk.ss.

-k n m
    Load executable-embedded code from file offset n to m.

-C, --main
    Like -r, then calls `main' with a list of argument strings. The first string in the list is the name of the loaded file, and the rest of the list contains leftover command-line arguments.

INITIALIZATION OPTIONS

-X dir, --collects dir
    Sets dir as the location of the main "collects" directory. If dir is relative, it is relative to the executable.

-S dir

--search dir
    Adds dir to the search path for library collections. If dir is relative, it is relative to the executable.

-U, --no-user-path
    Ignores PLTHOME, and omits the user-specific "collects" directory from the search path for library collections.

-x, --no-lib-path
    Skips trying to set current-library-collection-paths.

-q, --no-init-file
    Skips trying to load "~/.mzschemerc".

-N file, --name file
    Sets the program name to name.

-A, --no-argv
    Skips defining `argv' and `program'.

LANGUAGE SETTING OPTIONS

-g, --case-sens
    Identifiers and symbols are initially case-sensitive (the default).

-G, --case-insens
    Identifiers and symbols are initially case-insensitive.

-s, --set-undef
    Set! works on undefined identifiers.

MISCELLANEOUS OPTIONS

--
    No argument following this switch is used as a switch.

-p, --persistent
    Catches AIX SIGDANGER (low page space) signal. (AIX only)

-m, --mute-banner
    Suppresses the startup banner.

-v, --version
    Suppresses the read-eval-print loop.

-h, --help
    Shows help for command-line arguments.

-Rfile, --restore file
    Restores an image; must be the only switch. (Special versions only)

OPTION CONVENTIONS
Multiple single-letter switches can be collapsed, with arguments placed after the collapsed switches; the first collapsed switch cannot be --. E.g.: -vfme file expr is the same as -v -f file -m -e expr.

Extra arguments following the last switch are put into the Scheme global variable `argv' as a vector of strings. The name used to start MzScheme is put into the global variable `program' as a string.

Extra arguments after a --restore file are returned as a vector of strings to the continuation of the `write-image-to-file' call that created the image.

Expressions/files are evaluated/loaded in order as provided, including calls to main implied by --main, embedded segments loaded by -k, and so on. An uncaught exception during an evaluation/load causes later evaluations/loads to be skipped.

The current-library-collections-paths parameter is automatically set before any expressions/files are evaluated/loaded, unless the -x or --no-lib-path switch is used.

EXECUTABLE NAME
If the executable name has the form scheme-dialect , then the command line is effectively prefixed with
-qAeC '(require (lib "init.ss" "script-lang" "dialect "))' The first actual command-line argument thus serves as the name of a file to load. The file should define main, which is called with the command-line arguments---starting with the loaded file name---as a list of immutable strings.

FILES
The file "~/.mzschemerc" is loaded before any provided expressions/files are evaluated/loaded, unless the -q or --no-init-file switch is used.

Unless the -U or --no-user-path switch is provided, the library collections search path is read from the PLTCOLLECTS environment variable (as a colon-separated list of paths). Where the empty path appears in PLTCOLLECTS, it is replaced with the default collections directory search path.

EXECUTABLE SCRIPTS
The most flexible way to create an executable script file is to trampoline through /bin/sh, using a #| ... |# block-comment trick to make the first few lines parseable by both /bin/sh and mzscheme. Here's an example:

  #! /bin/sh
  #|
  exec mzscheme -qr "$0" ${1+"$@"}
  |#
  (display "Hello, world!")
  (newline)

MORE INFORMATION
For further information on MzScheme, please consult the on-line documentation and other information available at

http://www.plt-scheme.org/software/mzscheme/

BUGS
Submit bug reports via
http://bugs.plt-scheme.org/ (encouraged) or by e-mail to
bugs@plt-scheme.org (discouraged)

AUTHOR
MzScheme was implemented by Matthew Flatt (mflatt@plt-scheme.org). It uses the conservative garbage collector implemented by Hans Boehm and extended by John Ellis. MzScheme was originally based on libscheme, written by Brent Benson.

SEE ALSO
help-desk(1), drscheme(1), mred(1)