[EVAL.REC] [the LISP function EVAL] [January 1, 1981] { [cr,lf] (2573TL;)& [console input] (R13%='';T127%(=)(@#|;L@#;);)# [bal paren] (A')'E;'('E@+::)+ [next element] (A'('E@+JA;j' 'U;')'U;)- [enclose in quotes] (JZD39%II39%IJQ;)% [car] (JZDI@-Q;)1 [cdr] (JZDI@-D(' 'ED;;)JZQ;)2 [cons] (JZD('()'='('II')'I;IAjI' 'I;)JZQ;)3 [atom] (JZDI'('E'F';'T';)4 [eq] (='T';L'F';)5 [null] ('()'='T';L'F';)6 [read] (@&'> 'TL(@#;:);)7 [print] (@&' 'TLT;)8 [append] (JZDIjIzABBD' 'IJZQ;)9 [not] ('T'='F';'F'='T';;)0 [ASSOC] (1$rmml1$S0$rmml0$S(0$ryG1$ryG@1@5'T'=1$ryG@2@1;L0$ryG1$ryG@2@2@a;)nLn0$SnLn1$S ;)a [EVAL] (2$rmml2$S0$rmml0$S(0$ryG@4'T'=0$ryG2$ryG@a;L0$ryG@1@4'T'=0$ryG@10$ryG@2@f;L0$ryG@1@1"lambda"@5'T'=0$ryG@1@2@2@10$ryG@1@2@10$ryG@2@v@e;L;)nLn0$SnLn2$S ;)e [the most primitive atomic function forms] (1$rmml1$S0$rmml0$S(0$ryG"car"@5'T'=1$ryG@12$ryG@e@1;L0$ryG"cdr"@5'T'=1$ryG@12$ryG@e@2;L0$ryG"cons"@5'T'=1$ryG@12$ryG@e1$ryG@2@12$ryG@e@3;L0$ryG"atom"@5'T'=1$ryG@12$ryG@e@4;L0$ryG"eq"@5'T'=1$ryG@12$ryG@e1$ryG@2@12$ryG@e@5;L0$ryG"quote"@5'T'=1$ryG@1;L0$ryG"if"@5'T'=(1$ryG@12$ryG@e'T'=1$ryG@2@12$ryG@e;L1$ryG@2@2@12$ryG@e;);L'T''T'=@g;L;)nLn0$SnLn1$S ;)f [convenient atomic function forms] ((0$ryG"and"@5'T'=1$ryG@n;L0$ryG"or"@5'T'=1$ryG@o;L0$ryG"not"@5'T'=1$ryG@12$ryG@e@0;L0$ryG"list"@5'T'=1$ryG@l;L0$ryG"append"@5'T'=1$ryG@12$ryG@e1$ryG@2@12$ryG@e@9;L0$ryG"cond"@5'T'=1$ryG@m;L'T''T'=@h;L;) ;)g [CAR and CDR composites] ((0$ryG"caar"@5'T'=1$ryG@12$ryG@e@1@1;L0$ryG"cadr"@5'T'=1$ryG@12$ryG@e@2@1;L0$ryG"cdar"@5'T'=1$ryG@12$ryG@e@1@2;L0$ryG"cddr"@5'T'=1$ryG@12$ryG@e@2@2;L'T''T'=@i;L;) ;)h [service functions] ((0$ryG"print"@5'T'=1$ryG@12$ryG@e@8;L0$ryG"read"@5'T'=@7;L;) ;)i [EVLIS - evaluate a LIST] (1$rmml1$S(1$ryG@6'T'=1$ryG;L1$ryG@12$ryG@e1$ryG@2@l@3;)nLn1$S ;)l [EVCON - evaluate COND] (1$rmml1$S(1$ryG@1@12$ryG@e'T'=1$ryG@1@2@12$ryG@e;L1$ryG@2@m;)nLn1$S ;)m [EVAND - evaluate an AND] (1$rmml1$S(1$ryG@6'T'='T';L(1$ryG@12$ryG@e'T'=1$ryG@2@n'T'='T';;)'T'='T';L'F';)nLn1$S ;)n [EVOR - evaluate an OR] (1$rmml1$S(1$ryG@6@0'T'=(1$ryG@12$ryG@e'T'='T';L1$ryG@2@o'T'='T';L'F';)'T'='T';;)nLn1$S ;)o [EVARGS - augment ALIST for LAMBDA] (1$rmml1$S0$rmml0$S(0$ryG@6'T'=2$ryG;L0$ryG@11$ryG@12$ryG@e0$ryG@21$ryG@2@v@3@3;)nLn0$SnLn1$S ;)v [main program] (@7"()"@e@8 ;)* (@*;;)} [end]