home *** CD-ROM | disk | FTP | other *** search
/ Oakland CPM Archive / oakcpm.iso / sigm / vol166 / eval.rec < prev    next >
Encoding:
Text File  |  1984-04-29  |  2.3 KB  |  73 lines

  1.  
  2. [EVAL.REC]
  3. [the LISP function EVAL]
  4. [January 1, 1981]
  5.  
  6.  {
  7.     [cr,lf]            (2573TL;)&
  8.     [console input]        (R13%='';T127%(=)(@#|;L@#;);)#
  9.     [bal paren]            (A')'E;'('E@+::)+
  10.     [next element]        (A'('E@+JA;j' 'U;')'U;)-
  11.     [enclose in quotes]        (JZD39%II39%IJQ;)%
  12.     [car]            (JZDI@-Q;)1
  13.     [cdr]            (JZDI@-D(' 'ED;;)JZQ;)2
  14.     [cons]            (JZD('()'='('II')'I;IAjI' 'I;)JZQ;)3
  15.     [atom]            (JZDI'('E'F';'T';)4
  16.     [eq]            (='T';L'F';)5
  17.     [null]            ('()'='T';L'F';)6
  18.     [read]            (@&'> 'TL(@#;:);)7
  19.     [print]            (@&'  'TLT;)8
  20.     [append]            (JZDIjIzABBD' 'IJZQ;)9
  21.     [not]            ('T'='F';'F'='T';;)0
  22.                 
  23. [ASSOC]
  24. (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
  25.  
  26.  
  27. [EVAL]
  28. (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
  29.  
  30.  
  31. [the most primitive atomic function forms]
  32. (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
  33.  
  34.  
  35. [convenient atomic function forms]
  36. ((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
  37.  
  38.  
  39. [CAR and CDR composites]
  40. ((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
  41.  
  42.  
  43. [service functions]
  44. ((0$ryG"print"@5'T'=1$ryG@12$ryG@e@8;L0$ryG"read"@5'T'=@7;L;) ;)i
  45.  
  46.  
  47. [EVLIS - evaluate a LIST]
  48. (1$rmml1$S(1$ryG@6'T'=1$ryG;L1$ryG@12$ryG@e1$ryG@2@l@3;)nLn1$S ;)l
  49.  
  50.  
  51. [EVCON - evaluate COND]
  52. (1$rmml1$S(1$ryG@1@12$ryG@e'T'=1$ryG@1@2@12$ryG@e;L1$ryG@2@m;)nLn1$S ;)m
  53.  
  54.  
  55. [EVAND - evaluate an AND]
  56. (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
  57.  
  58.  
  59. [EVOR - evaluate an OR]
  60. (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
  61.  
  62.  
  63. [EVARGS - augment ALIST for LAMBDA]
  64. (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
  65.  
  66.  
  67. [main program]
  68. (@7"()"@e@8 ;)*
  69.  
  70. (@*;;)}
  71.  
  72. [end]
  73.