1. apply itself forms an expression representing the valueof the function applied to the arguments, and puts the work ofevaluating this expression onto a function-eval. It uses - appqto put quotes around each of the arguments, so that - eval willregard them as standing for themselves.2. - eval[e;p] has two arguments, an expression e to beevaluated, and a list of pairs p. - The first item of each pairis an atomic symbol, and the second is the expression for whichthe symbol stands.3. If the expression to be evaluated is atomic, - eval evaluateswhatever is paired with it first on the list p. -4. If e is not atomic but car[e] is atomic, then the expressionhas one of the forms QUOTE,^) or ATOM,^) or (~&,e~,e*)or (COND, (pl,eJ, ...,(pn, en) ), or CAR,^ ) or (CDR, e) or CONS,^^,e2) or (f,el, ..., en) where f is an atomic symbol.In the case QUOTE,^) the expression e, itself, is taken.In the case of ATOM,^) or CAR,^) or (cDR,~) the expression eis evaluated and the appropriate function taken. In the caseof (~&,e~,e~) or CONS,^^,^^) two expressions have to be evaluated.In the case of (COND, (pl,el), ...,(pn,en)) the pls haveto be evaluated in order until a true p is found, and then thecorresponding e must be evaluated. This is accomplished byevcon. Finally, in the case of (f,el,. ..,en) we evaluate theexpression that results from replacing f in this expression bywhatever it is paired with in the list p. -5. The evaluation of LABEL,^,^),^^, ..., en) is accom-plished by evaluating (E,el, ..., en) with the pairing LA LABEL,f,g)) put on the front of the previous list p - of pairs.6. Finally, the evaluation of ( (LAMBDA, (xi, . . . , xn) ,&) ,el,. . . ,en) is accomplished by evaluating g with the list ofpairs ((xl,ei), . . ., (xn,en)) put on the front of the previouslist p. -
The list p - could be eliminated, and LAMBDA and LABEL expressionsevaluated by substituting the arguments for the variablesin the expression E . Unfortunately, difficulties involvingcollisions of bound variables arise, but they are avoided byusing the list - p.g. Functions kt.h Functions as ~rgumentsThere are a number of useful functions some of whose argumentsare functions. They are especially useful in definingother functions. One such function is maplist[x;f] with an S-expression argument x and an argument f that is a function fromS-expressions to S-expressions. We defineThe usefulness of mgplist is illustrated by formulas for thepartial derivative with respect to x of expressions involvingsums and products of x and other variables. The S-expressionsthat we shall differentiate are formed as follows.I' An atomic symbol is an allowed expression.2. If el,e2, . . . ,en are allowed expressions, PLUS,^^, . . . ,en)TIMES,^^, . . . ,en) are also, and represent the sum and product,andrespectively, of el,...,en. 1This is, essentially, the Polish notation for functions, exceptthat the inclusion of parentheses and commas allows functionsof variable numbers of arguments. An example of an allowedexpression is1For more exact information on arithmetic functions see Section 9.4.
- 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: The S-functLon apply is defined byI
- 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 and 48: In either case, if a machine-langua
- Page 49 and 50: Note that the argument x starts wit
- 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;