MTS 8: LISP and SLIP in MTS
Page Revised January 1983 June 1976
(DECLARE F =CHECK)
then when it is compiled, the generated code will include a
test to check that the correct number of arguments was passed
to the function, and various other error checks (for valid
atomic, list, or numeric arguments, etc.) will be made.
Normally, little or no error checking is performed by compiled
programs.
If the variable =CHECK is set to T, all functions will be
compiled as if they had been declared =CHECK.
Functions Known to the Compiler
The following functions have fixed definitions within compiled
code:
ABS ADD ADD1 AND APPLY APPLY1 ARG ASSOC ATOM C...R COND CONS
IDIVIDE EQ EQUAL EVAL EVEN GET GO GRAFT GREATER LAND LESS
LENGTH LIST LOR LXOR MAP MAPC MAPCAN MAPCAR MAPCON MAPLIST MAX
MEMBER MIN MINUS NOT NTH NUMBER OR PROG PROGN PUT QUOTE REMAIN
REPEAT RETURN REVERSE SELECT SET SETA SETQ SHIFT SUB SUB1
TIMES UNCONS ZERO
The following functions are declared to be fixed-link functions:
| CHECKPOINT, COPY, DECLARE, DEFUN, DISPLAY, LABEL, MODIFY,
| NEWWORLD, OBLIST, OPEN, REALWORLD, REM, REMOB, SETA2, SETQ2,
| STATUS, TRACE, UNTRACE,
Limitations and Warnings
(1) General Warning:
Compiled functions do a minimum of error checking, so users are
advised to debug their programs before compiling them. Unless
the =CHECK option is used, the normal checks for undefined
variables, bad atomic, list, and numeric arguments, array
dimensions exceeding legal limits, etc., do not occur in
compiled code.
(2) Since fixed-link functions are not executed under control of
EVAL, debugging features such as TRACE, BUG, and STEP cannot be
used with them.
(3) An APPLY of a no-spread macro or LAMBDA-expression cannot be
compiled. (Use APPLY1 instead.)
(4) Functions used as macros may not be recursive. An attempt to
compile a recursive MACRO will generate an error.
86 LISP