A function defined by an EXPR may be already available in the<strong>LISP</strong> system itself, in which case it appears among the functionsgiven in Section 9, or it may be defined by the user byusing the define function, Define is a pseudo-function (seeSection 4.3) whose effect is to assign definitions of the EXPRsort to functions. The atomic symbol for the name of eachfunction to be defined must be paired with the S-expression definingthat function. A list of such pairs is then given asthe argument for define, The APPLY operator acting on defineof this argument creates, for each function defined, the EXPRstructure shown above.If EXPR is already on the association list for a function,it is changed to point to the new S-expression, so that thedefine is really a redefine .Consider for example the two functions, ff and alt dis- - -cussed in Chapter 3,andThese are defined by letting the APPLY operator evaluate thefollowing triplet, f;x;p, where x is a list of two pairs.f: DEFINE,x: (((FF, (LAMBDA, (x),(C~ND((ATOM,X),X),(T,(FF, ( ~~~3x1) ) ) ) ),(ALT,(LAMBDA,(X),(COND,( (OR, (NULL, x ) ,(NULL, (CDR,X>) 1 ,X), (T, (CONS, CAR,^),(ALT, (CDR, (~DR,x> 1) ) >) 1) 1)P: ( 1
Note that the argument x starts with three parentheses: thefirst parenthesis starts the list x, the second indicates thatx is a list of one argument, and the third starts the first pair.After APPLY has evaluated this triplet, the define function willhave put the respective definitions, labelled by EXPR, on theassociation lists of the atomic symbols FF and ALT. Of course,define itself is one of the functions already defined and availableas part of the <strong>LISP</strong> system.Incidentally, a function can be defined in terms of anotheralready-defined function--in which case the S-expression becomessimply the name of the established function. For examplesuppose one wishes to define the function FRST by the pair(FRST,CAR). After the define has been applied, the associationlist for FRST w i l l contain the structureCARwhere CAR points to the already-established association listfor CAR. Chains of definitions of this sort are perfectly legalin <strong>LISP</strong> I.The function define makes the use of label desirable onlywhen the labeled function is itself the result of a computationand is not to be put on an association list for storage reasons.4.3 Functions Appropriate to APPLYVarious kinds of functions can be used in <strong>LISP</strong> programming.One way of classifying functions is to divide them intofunctions and pseudo-functions, A function in <strong>LISP</strong> is evaluatedfor its value as such, e.g. car[ (A,B,C)] = A, whereas a pseudo-
- Page 1: Artificial Intelli~cnce GroupJ. McC
- Page 5: Contents1 . Introduction ..........
- Page 9 and 10: 2. Recursive Functions of Symbolic
- Page 12 and 13: expression was, defined, the meanin
- Page 14: Let f be an expression that stands
- Page 17 and 18: There is a twofold reason for depar
- Page 19 and 20: 2, eq - 4eq[x;y] is defined if and
- Page 21 and 22: 2. sub~t[x;~;z]This function gives
- Page 23 and 24: z;eq[caar[x];z]sub2[x;~];~((u1,vi)
- Page 25 and 26: The S-functLon apply is defined byI
- Page 27 and 28: The list p - could be eliminated, a
- Page 29 and 30: 3. LISP PrimerThe features of LISP
- Page 31 and 32: The answer ( ((x A) B) (X A) ) will
- Page 33 and 34: one introducing it into the consequ
- Page 35 and 36: h,~~,pand)Y,SP5a. Rule4>: If j,++h,
- Page 37 and 38: to one of the 10 rules. The formula
- Page 39 and 40: (~111(LAMBDA( ~1 A2 A C) (COND ((NU
- Page 41 and 42: This causes the functions mentioned
- Page 43 and 44: 4. The LISP Programming SystemIn th
- Page 45 and 46: Example 3:The following example, on
- Page 47: In either case, if a machine-langua
- Page 51 and 52: sion whose first element may be LAM
- Page 53 and 54: 5 = (atomic function, arguments): C
- Page 55 and 56: - PROG is a special form described
- Page 57 and 58: When a list beginning with GO is en
- Page 59 and 60: Since the program feature will be u
- Page 61 and 62: and goes ahead after printing out(f
- Page 63 and 64: eturn[fn[a]In terms of the M-type n
- Page 65 and 66: ( , SXD, G0011,4),LD&,G0002)( ,C;LA
- Page 67 and 68: push-down(MAPLIST,BSS, 0)( ,SXD,GOO
- Page 69 and 70: Ls.( ,O,U( ,STO,G0015)( , LXD, $FRE
- Page 71 and 72: Running a LISP ProgramIn this secti
- Page 73 and 74: SET :Note:FLX*:CRD*:FIN:This card w
- Page 75 and 76: Sense switches used:SWITCH NUMBERUS
- Page 77 and 78: The Flexowriter Sys tem (for M.1.T.
- Page 79 and 80: indicates carriage returnindicates
- Page 81 and 82: TEN-ModeThere are ten buffers of co
- Page 83 and 84: ErrorsTyping errors may be erased b
- Page 85 and 86: (from the tab type-in) will be proc
- Page 87 and 88: answerTENCAR ((A@) 0- LINE NUMBER M
- Page 89 and 90: 6. List StructuresMuch of the follo
- Page 91 and 92: y either the list structure of Fig.
- Page 93 and 94: which is represented asFirst we con
- Page 95 and 96: the location of the association lis
- Page 97 and 98: and the decrement of the TXL instru
- Page 99 and 100:
the 2's (8's) complement of an octa
- Page 101 and 102:
25207 052567 05257025210 000000 000
- Page 103:
garbage collector does a linear swe
- Page 106 and 107:
The function collapse, is defined a
- Page 108 and 109:
THE TIME IS NOW 2/16 1139.7FUNCTION
- Page 110 and 111:
DEFINE( ( (RVRSE, (LAMBDA, (L ) JCO
- Page 113 and 114:
8. Error Indications Given by LISPB
- Page 115 and 116:
Errors due to computer inadequacies
- Page 117 and 118:
Errors during the operation of the
- Page 119 and 120:
9. Functions Available in LISPIn th
- Page 121 and 122:
s[x;y] : machine languageThe value
- Page 123 and 124:
eval[e;b] - : machine languageThe r
- Page 125 and 126:
Defining Functions:The argument of
- Page 127 and 128:
MORE]nconc[x;y]: machine languageTh
- Page 129 and 130:
evaluated functions. - map is used
- Page 131 and 132:
-ins t [x;y; z]: machine languageHe
- Page 133 and 134:
prog[prin2[d~rinl[~];The function p
- Page 135 and 136:
puncha[x] : machine languageThe fun
- Page 137 and 138:
9.2 Special Formsquote : machine la
- Page 139 and 140:
function[ f ] : machine language; s
- Page 141 and 142:
desc[cdr[x];cdr[y]-desc[x;y] : mach
- Page 143 and 144:
eturn[^]intv[x] : machine language;
- Page 145 and 146:
The program for compsrch has the pr
- Page 147 and 148:
NIL;T+The value of - cpl is the loc
- Page 149 and 150:
--- ~reaterlp; q] : machine languag
- Page 151 and 152:
matrixmultiply[x;y] : machine langu
- Page 153 and 154:
9.5 Alphabetic Index to FunctionsFu
- Page 155 and 156:
Function Page .mapcon .............
- Page 157 and 158:
GENERAL INDEXActive register, 96APP
- Page 159 and 160:
GENERAL INDEXFunctions, 3alphabetic
- Page 161 and 162:
GENERAL INDEXPropositionalcalculus;