2 Interpreter
This section describes the klisp, a Kernel Programming Language stand-alone interpreter.
2.1 Invocation
klisp is invoked like this:
klisp [options] [script]
2.2 Description
klisp is a stand-alone klisp interpreter for the Kernel Programming Language. It loads and evaluates Kernel programs in textual source form. klisp can be used as a batch interpreter and also interactively. The given options
(see Command Line Options) are evaluated and then the klisp program in file script
is loaded and evaluated. All evaluations mentioned, including the initialization that is described below, take place in the same (initially) standard environment. All values that result from these evaluation are discarded, but if the root-continuation
or error-continuation
are passed a value, the evaluation of options
is interrupted and klisp terminates. See Exit Status, for a description of the exit status in each case.
The string script
together with all arguments are available as a list of strings via the applicative get-script-arguments
. If these arguments contain spaces or other characters special to the shell, then they should be quoted (but note that the quotes will be removed by the shell). The complete command line, including the name of the interpreter, options, the script, and its arguments are available as a list of strings via the applicative get-interpreter-arguments
.
At the very beginning, before even handling the command line, klisp reads and evaluates the contents of the environment variable KLISP_INIT
, if it is defined. To use an init file, just define KLISP_INIT
to the following form: (load "/path/to/init-file")
. Notice that klisp expects exactly one expression in KLISP_INIT
, if it is defined. So it is an error to have no expressions or more than one in KLISP_INIT
. The same is true of the argument to the -e
option, as both are implemented in terms of string-eval
.
In interactive mode, klisp prompts the user, reads expressions from the standard input, and evaluates them as they are read. The default prompt is “klisp> “.
2.3 Options
Options start with – and are described below. You can use — to signal the end of options. If no arguments are given, then -v -i is assumed when the standard input is a terminal; otherwise, – is assumed. If no script, or option -e or -l
is given, -i is assumed.
- –
- load and execute the standard input as a file, that is, not interactively, even when the standard input is a terminal. .TP
- -e expr
- evaluate expression expr. You need to quote expr if it contains spaces, quotes, or other characters special to the shell.
- -i
- enter interactive mode after script is executed.
- -l name
- evaluate
(load "name")
before script is executed. Typically used to do environment initialization. - -r name
- evaluate
(require "name")
before script is executed. Typically used to load libraries. - -v
- show version and copyright information.
2.4 Exit Status
If the script or stdin reach EOF or if there is no script, EXIT_SUCCESS
is returned. If the error-continuation is passed an object during init, arguments or script evaluation EXIT_FAILURE
is returned. If the root-continuation is passed an object, klisp tries to convert the value passed to the root-continuation to an exit status as follows:
integer
- If the value is an integer it is used as exit status.
boolean
- If the value is a boolean then
EXIT_SUCCESS
is returned for#t
andEXIT_FAILURE
for#f
. inert
- If the value is inert, then
EXIT_SUCCESS
is returned. else
- In any other case
EXIT_FAILURE
is returned.
2.5 Environment Variables
The following environment variables affect the behaviour of klisp
- KLISP_INIT
- A Kernel expression to be evaluated before any arguments to the interpreter. To use an init file, just define KLISP_INIT to the following form
(load "/path/to/init-file")
- KLISP_PATH
- A semicolon separated list of templates for controlling the search of required files. Each template can use the char
?
to be replaced by the required name at run-time.