.nil - represents empty list and the boolean value for "false". The value of NIL is NIL, and cannot be changed (it is a constant). (car NIL) and (cdr NIL) are also defined to be NIL. .t - boolean value "true" is constant with value t. .self - within a method context, the current object otherwise initially unbound. .object - constant, value is the class 'Object.' .class - constant, value is the class 'Class'. .internal-time-units-per-second - integer constant to divide returned times by to get time in seconds. .pi - floating point aproximation of pi (constant defined when math extension is compiled). .*obarray* - the object hash table. Length of array is a compilation option. Objects are hashed using the hash function and are placed on a list in the appropriate array slot. This variable does note exist when the package feature is compiled in. .*package* - the current package. Do not alter. Part of the package feature. .*terminal-io* - stream bound to keyboard and display. Do not alter. .*standard-input* - the standard input stream, initially stdin. If stdin is not redirected on the command line, then *terminal-io* is used so that all interactive i/o uses the same stream. .*standard-output* - the standard output stream, initially stdout. If stdout is not redirected on the command line then *terminal-io* is used so that all interactive i/o uses the same stream. .*error-output* - the error output stream (used by all error messages), initially same as *terminal-io*. .*trace-output* - the trace output stream (used by the trace function), initially same as *terminal-io*. .*debug-io* - the break loop i/o stream, initially same as *terminal-io*. System messages (other than error messages) also print out on this stream. .*breakenable* - flag controlling entering break loop on errors. .*tracelist* - list of names of functions to trace, as set by trace function. .*tracenable* - enable trace back printout on errors. .*tracelimit* - number of levels of trace back information. .*evalhook* - user substitute for the evaluator function .*applyhook* - user substitute for function application .*readtable* - the current readtable .*gc-flag* - controls the printing of gc messages. When non-NIL, a message is printed after each garbage collection giving the total number of nodes and the number of nodes free. .*gc-hook* - function to call after garbage collection .*integer-format* - format for printing integers (when not bound to a string, defaults to "%d" or "%ld" depending on implementation). Variable not used when bignum extension installed. .*float-format* - format for printing floats (when not bound to a string, defaults to "%g") .*readtable-case* - symbol read and output case. .*read-base* - When bound to a fixnum in the range 2 through 36, determines the default radix used when reading rational numbers. Part of bignum extension. .*print-base* - When bound to a fixnum in the range 2 through 36, determines the radix used when printing rational numbers with prin1 and princ. Part of bignum extension. .*print-case* - symbol output case when printing. .*print-level* - When bound to a number, list levels beyond this value are printed as '#'. Used by all printing functions. Good precaution to avoid getting caught in circular lists. .*print-length* - When bound to a number, lists longer than this value are printed as '...'. Used by all printing functions. Good precaution to avoid getting caught in circular lists. .*dos-input* - When not NIL, uses dos line input function for read .*displace-macros* - When not NIL, macros are replaced by their expansions when exectuted .*random-state* - the default random-state used by the random function. .*features* - list of features, initially (:xlisp), used for #+ and #- reader macros. .*startup-functions* - list of functions to be executed when workspace started .*command-line* - the xlisp command line, in the form of a list of strings, one string per argument. .*load-file-arguments* - When not NIL, file arguements are loaded at startup. .*top-level-loop* - Top level loop to utilize, defaults to TOP-LEVEL- LOOP. Note that this function can only be restarted by executing TOP- LEVEL, and it never exits. .*read-suppress* - When not NIL, inhibits certain parts of reading. Used by the #+ and #- macroes. .+ .++ .+++ .* .** .*** There are several symbols maintained by the read/eval/print loop. The symbols '+', '++', and '+++' are bound to the most recent three input expressions. The symbols '*', '**' and '***' are bound to the most recent three results. The symbol '-' is bound to the expression currently being evaluated. It becomes the value of '+' at the end of the evaluation. (eval ) EVALUATE AN XLISP EXPRESSION the expression to be evaluated returns the result of evaluating the expression (apply ...) APPLY A FUNCTION TO A LIST OF ARGUMENTS the function to apply (or function symbol). May not be macro or fsubr. initial arguments, which are CONSed to... the argument list returns the result of applying the function to the arguments (funcall ...) CALL A FUNCTION WITH ARGUMENTS the function to call (or function symbol). May not be macro or fsubr. arguments to pass to the function returns the result of calling the function with the arguments (quote ) RETURN AN EXPRESSION UNEVALUATED fsubr the expression to be quoted (quoted) returns unevaluated (function ) GET THE FUNCTIONAL INTERPRETATION fsubr the symbol or lambda expression (quoted) returns the functional interpretation (complement ) MAKE A COMPLEMENTARY FUNCTION This function is intended to eliminate the need for -IF-NOT functions and :TEST-NOT keys by providing a way to make complementary functions. the function or closure (not macro or fsubr) returns a new function closure that returns NOT of the result of the original function. (identity ) RETURN THE EXPRESSION the expression returns the expression (backquote ) FILL IN A TEMPLATE fsubr. Note: an improved backquote facility, which works properly when nested, is available by loading the file backquot.lsp. the template (quoted) returns a copy of the template with comma and comma-at expressions expanded. (comma ) COMMA EXPRESSION (Never executed) As the object of a backquote expansion, the expression is evaluated and becomes an object in the enclosing list. (comma-at ) COMMA-AT EXPRESSION (Never executed) As the object of a backquote expansion, the expression is evaluated (and must evaluate to a list) and is then spliced into the enclosing list. (lambda ...) MAKE A FUNCTION CLOSURE fsubr formal argument list (lambda list) (quoted) expressions of the function body (quoted) returns the function closure (get-lambda-expression ) GET THE LAMBDA EXPRESSION the closure returns the original lambda expression, or NIL if not a closure. Second return value is T if closure has a non-global environment, and the third return value is the name of the closure. (macroexpand
) RECURSIVELY EXPAND MACRO CALLS the form to expand returns the macro expansion (macroexpand-1 ) EXPAND A MACRO CALL the macro call form returns the macro expansion (multiple-value-bind [...]) BIND RETURN VALUES INTO LOCAL CONTEXT defined as macro in common.lsp form to be evaluated list of variables to bind to return values of vform forms evaluated sequentially, as in LET, using local bindings returns values of last form evaluated, or NIL if no forms (multiple-value-call ...) COLLECT VALUES AND APPLY FUNCTION fsubr function to apply forms, which are evaluated, with result values collected returns result of applying fun to all of the returned values of the forms (multiple-value-list ) COLLECT MULTIPLE RETURNED VALUES INTO A LIST defined as macro in common.lsp form to be evaluated returns list of returned values (multiple-value-prog1 [ ...]) RETURN VALUES OF FIRST FORM fsubr one or more forms, which are evaluated sequentially returns the result values of the first form (multiple-value-setq ) BIND RETURN VALUES TO VARIABLES defined as macro in common.lsp form to be evaluated list of variables to bind to return values of form returns (undefined, implementation dependent) (nth-value ) EXTRACT A RETURN VALUE fsubr index into return values form which gets evaluated returns the nth result value of exectuing the form (values []) RETURN MULTIPLE VALUES expression(s) to be evaluated returns each argument as a separate value (values-list ) RETURN MULTIPLE VALUES FROM LIST defined in common.lsp a list returns each list element as a separate value (set ) SET THE GLOBAL VALUE OF A SYMBOL You can also use (setf (symbol-value ) ) the symbol being set the new value returns the new value (setq [ ]...) SET THE VALUE OF A SYMBOL fsubr. You can also use (setf ) the symbol being set (quoted) the new value returns the last new value or NIL if no arguments (psetq [ ]...) PARALLEL VERSION OF SETQ fsubr. All expressions are evaluated before any assignments are made. the symbol being set (quoted) the new value returns NIL (defun ...) DEFINE A FUNCTION (defmacro ...) DEFINE A MACRO fsubr symbol being defined (quoted) formal argument list (lambda list) (quoted) expressions constituting the body of the function (quoted) returns the function symbol (gensym []) GENERATE A SYMBOL string or number returns the new symbol, uninterned (intern []) MAKE AN INTERNED SYMBOL the symbol's print name string the package (defaults to current package) returns the new symbol. A second value is returned which is NIL if the symbol did not pre-exist, :internal if it is an internal symbol, :external if it is an external symbol, or :inherited if it inherited via USE-PACKAGE. (make-symbol ) MAKE AN UNINTERNED SYMBOL the symbol's print name string returns the new symbol (symbol-name ) GET THE PRINT NAME OF A SYMBOL the symbol returns the symbol's print name (symbol-value ) GET THE VALUE OF A SYMBOL May be used as a place form. the symbol returns the symbol's value (symbol-function ) GET THE FUNCTIONAL VALUE OF A SYMBOL May be used as a place form. the symbol returns the symbol's functional value (symbol-plist ) GET THE PROPERTY LIST OF A SYMBOL May be used as a place form. the symbol returns the symbol's property list (hash ) COMPUTE THE HASH INDEX the object to hash the table size (positive fixnum less than 32768) returns the hash index (fixnum 0 to n-1) (makunbound ) MAKE A SYMBOL VALUE BE UNBOUND You cannot unbind constants. the symbol returns the symbol (fmakunbound ) MAKE A SYMBOL FUNCTION BE UNBOUND the symbol returns the symbol (unintern []) UNINTERN A SYMBOL Defined in common.lsp if package extension not compiled. the symbol the package to look in for the symbol returns t if successful, NIL if symbol not interned (defconstant []) DEFINE A CONSTANT fsubr. the symbol the value optional comment string (ignored) returns the value (defparameter []) DEFINE A PARAMETER fsubr. the symbol (will be marked "special") the value optional comment string (ignored) returns the value (defvar [ []]) DEFINE A VARIABLE fsubr. Variable only initialized if not previously defined. the symbol (will be marked "special") the initial value, or NIL if absent. optional comment string (ignored) returns the current value (mark-as-special []) SET SPECIAL ATTRIBUTE Also see definition of PROCLAIM and DECLARE. symbol to mark non-nil to make into a constant returns nil, with symbol marked as special and possibly as a constant. (declare [ ...]) DECLARE ARGUMENT ATTRIBUTES Macro in common.lsp provided to assist in porting Common Lisp applications to XLISP-PLUS. list of local variable and attributes returns nil, produces an error message if attribute SPECIAL is used. (proclaim ) PROCLAIM GLOBAL SYMBOL ATTRIBUTES Function in common.lsp provided to assist in porting Common Lisp applications to XLISP-PLUS. a list of symbols. If the CAR of the list is SPECIAL, then the remaining symbols are marked as special variables. (copy-symbol []) MAKE A COPY OF A SYMBOL Function in common2.lsp symbol to copy if present and non-nil, copy value, function binding, and property list. returns un-interned copy of (setf [ ]...) SET THE VALUE OF A FIELD fsubr the field specifier the new value returns the last new value, or NIL if no arguments (psetf [ ]...) PARALLEL VERSION OF SETF fsubr. All expressions are evaluated and macro place forms expanded before any assignments are made. the field specifier the new value returns NIL (defsetf ) DEFINE A SETF FIELD SPECIFIER (defsetf () ...) Defined as macro in common.lsp. Convenient, Common Lisp compatible alternative to setting *setf* or *setf-lambda* property directly. field specifier symbol (quoted) function to use (quoted symbol) which takes the same arguments as the field specifier plus an additional argument for the value. The value must be returned. formal argument list of unevaluated arguments (lambda list) (quoted) symbol bound to value to store (quoted). The last expression must an expression to evaluate in the setf context.In this respect, defsetf works like a macro definition. returns the field specifier symbol (push ) CONS TO A FIELD Defined as macro in common.lsp. Only evaluates place form arguments one time. It is recommended that *displace-macros* be non-NIL for best performance. field specifier being modified (see setf) value to cons to field returns the new value which is (CONS ) (pushnew &key :test :test-not :key) CONS NEW TO A FIELD Defined as macro in common.lsp. Only evaluates place form arguments one time. It is recommended that *displace-macros* be non-NIL for best performance. field specifier being modified (see setf) value to cons to field, if not already MEMBER of field :test the test function (defaults to eql) :test-not the test function (sense inverted) :key function to apply to test function list argument (defaults to identity) returns the new value which is (CONS ) or (pop ) REMOVE FIRST ELEMENT OF A FIELD Defined as macro in common.lsp. Only evaluates place form arguments one time. It is recommended that *displace-macros* be non-NIL for best performance. the field being modified (see setf) returns (CAR ), field changed to (CDR ) (incf []) INCREMENT A FIELD (decf []) DECREMENT A FIELD Defined as macro in common.lsp. Only evaluates place form arguments one time. It is recommended that *displace-macros* be non-NIL for best performance. field specifier being modified (see setf) Numeric value (default 1) returns the new value which is (+ ) or (- ) (apropos []) SEARCH SYMBOLS FOR NAME MATCH (apropos-list []) Functions in common.lsp. find symbols which contain this string as substring of print name package to search, if absent, or NIL, search all packages returns apropos-list returns list of symbols, apropos prints them, along with some information, and returns nothing. (defpackage [