REF PROGSTRUCT                            Titch Le Bek, Rob Duncan, 1986

       COPYRIGHT University of Sussex 1993. All Rights Reserved.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<                             >>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<  THE LISP PROGRAM STRUCTURE >>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<                             >>>>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

This file  briefly  describes  the functions,  variables  and  constants
documented in Chapter  5 of the  standard Common Lisp  guide, which  is:
Common Lisp: The Language (Guy L. Steele, Digital Press, 1984).


-------------------------------------------------
1  A Listing of Functions Variables and Constants
-------------------------------------------------

(lambda ({var}*                                                  [macro]
         [&optional {var | (var  [initform [svar]])}*]
         [&rest var]
         [&key {var | ({var | (keyword var)} [initform [svar]])}*
         [&allow-other-keys]]
         [&aux {var | (var [initform])}*])
        {declaration | documentation-string}*
        {form}*)

        Creates an anonymous function.


lambda-list-keywords                                          [constant]
        A list  of  all  the  lambda-list  keywords  supported  by  this
        implementation (including those  used only  by defmacro).


lambda-parameters-limit                                       [constant]
        The upper exclusive  bound on the  number of distinct  parameter
        names that may  appear in  a single lambda-list.  Value in  this
        implementation: 536870912.


(defconstant name form [documentation])                          [macro]
        defconstant is like defparameter except that it asserts that the
        value of  name  is fixed  and  licenses the  compiler  to  build
        assumptions about the  value into programs  being compiled.  Any
        further assignment to a defconstant variable is an error.


(defparameter name form [documentation])                         [macro]
        defparameter is  similar to  defvar except  it requires  a  form
        which it evaluates as  the initial value  of the variable  name.
        defparameter is  used to  declare a  variable that  is  normally
        constant but it  does not permit  the compiler to  build in  any
        assumptions about it.


(defun fname lambda-list                                         [macro]
       {declaration | doc-string}*
       {form}*)
        Defines a function  named fname.  The function  that is  created
        binds its arguments  to the variables  specified in  lambda-list
        and  then  executes   the  code   in  {form}*.   This  code   is
        automatically enclosed  in a  block with  the same  name as  the
        function, which means that return-from can be used to exit  from
        the function.  The new  function becomes  the global  functional
        value of fname.

        fname may be a symbol or a list of the form (setf symbol). It is
        returned as the value of the defun form.


(defvar name [form [documentation]])                             [macro]
        defvar declares the  use of  name as a  special variable  in a
        program. If form is supplied  it becomes the initial value  of
        the variable. form is evaluated  only if it is used.  Optional
        documentation describes the meaning of the variable.


(eval-when ({situation}*) {form}*)                        [special-form]
        eval-when  allows  pieces  of  code  to  be  executed  only   at
        compile-time, only  at  load  time, or  at  run-time.  The  body
        {form}* is  processed  as an  implicit  progn but  only  in  the
        situations listed.  Each  situation must  be  one of  the  three
        keywords symbols :compile-toplevel, :load-toplevel, or :execute.
        :compile-toplevel specifies that the body should be processed if
        the eval-when form is a top-level form in a file being  compiled
        by compile-file. :load-toplevel specifies  that the body  should
        be processed if the eval-when form is a top-level form in a file
        being loaded with load. :execute indicates that the body  should
        be evaluated  at  run-time.  See Steele  1990  p89-94  for  full
        details.


--- C.all/lisp/ref/progstruct
--- Copyright University of Sussex 1993. All rights reserved.
