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

  1.  
  2. [DEMO.REC]
  3. [collection of LISP demonstration programs]
  4. [December 31, 1980]
  5. [December 28, 1983]
  6.  
  7. [[]]
  8.  
  9.  {
  10.     [cr,lf]            (2573TL;)&
  11.     [console input]        (R13%='';T08%(=2080[sp,bs]TL)(@#|;L@#;);)#
  12.     [logon message]        ('
  13. A collection of LISP demonstration programs:
  14.      (merge (1 2 3) (a b c)) produces (1 a 2 b 3 c)
  15.      (reverse (1 2 3 4 5)) produces (5 4 3 2 1)
  16.      (split (1 a 2 b 3 c)) produces ((1 2 3) (a b c))
  17.      (split* (1 a 2 b 3 c)) produces the same result
  18.      (binsum (1 1 1 0) (1 1)) produces (1 0 0 0 1)
  19. To execute one of these programs, type its name, then
  20. a carriage return. Then type its arguments, in response
  21. to the prompts.
  22. 'TL@&;)!
  23.     [bal paren]            (A')'E;'('E@+::)+
  24.     [next element]        (A'('E@+JA;j' 'U;')'U;)-
  25.     [enclose in quotes]        (JZD39%II39%IJQ;)%
  26.     [car]            (JZDI@-Q;)1
  27.     [cdr]            (JZDI@-D(' 'ED;;)JZQ;)2
  28.     [cons]            (JZD('()'='('II')'I;IAjI' 'I;)JZQ;)3
  29.     [atom]            (JZDI'('E'F';'T';)4
  30.     [eq]            (='T';L'F';)5
  31.     [null]            ('()'='T';L'F';)6
  32.     [read]            (@&'read> 'TL(@#;:);)7
  33.     [print]            (@&'      'TLT;)8
  34.     [append]            (JZDIjIzABBD' 'IJZQ;)9
  35.     [not]            ('T'='F';'F'='T';;)0
  36.                 
  37. [calculate a binary sum - use reversed digits]
  38. (1$rmml1$S0$rmml0$S0$ryG'()'@r1$ryG'()'@r@c'()'@rnLn0$SnLn1$S ;)b
  39.  
  40.  
  41. [binary sum - sum low order bits, then rest]
  42. (1$rmml1$S0$rmml0$S(0$ryG@6'T'=1$ryG;L1$ryG@6'T'=0$ryG;L'T''T'=0$ryG@11$ryG@1@d0$ryG@11$ryG@1@e'()'@30$ryG@21$ryG@2@c@c@3;L;)nLn0$SnLn1$S ;)c
  43.  
  44.  
  45. [sum of two bits]
  46. (1$rmml1$S0$rmml0$S(0$ryG"0"@5'T'=1$ryG;L1$ryG"0"@5'T'=0$ryG;L'T''T'="0";L;)nLn0$SnLn1$S ;)d
  47.  
  48.  
  49. [carry bit]
  50. (1$rmml1$S0$rmml0$S(0$ryG"0"@5'T'="0";L1$ryG"0"@5'T'="0";L'T''T'="1";L;)nLn0$SnLn1$S ;)e
  51.  
  52.  
  53. [make a list of two elements]
  54. (1$rmml1$S0$rmml0$S0$ryG1$ryG"()"@3@3nLn0$SnLn1$S ;)l
  55.  
  56.  
  57. [merge two lists]
  58. (1$rmml1$S0$rmml0$S(0$ryG@6'T'=1$ryG;L(1$ryG@6'T'=0$ryG;L0$ryG@11$ryG@10$ryG@21$ryG@2@m@3@3;);)nLn0$SnLn1$S ;)m
  59.  
  60.  
  61. [reverse a list]
  62. (1$rmml1$S0$rmml0$S(0$ryG"()"@5'T'=1$ryG;L0$ryG@20$ryG@11$ryG@3@r;)nLn0$SnLn1$S ;)r
  63.  
  64.  
  65. [split a list into odds and evens]
  66. (2$rmml2$S1$rmml1$S0$rmml0$S(0$ryG@6'T'=1$ryG2$ryG@l;L(0$ryG@2@6'T'=0$ryG@11$ryG@32$ryG@l;L0$ryG@2@20$ryG@11$ryG@30$ryG@2@12$ryG@3@s;);)nLn0$SnLn1$SnLn2$S ;)s
  67.  
  68.  
  69. [split a list into odds and evens - variant]
  70. (0$rmml0$S(0$ryG@6'T'=0$ryG0$ryG@l;L(0$ryG@2@6'T'=0$ryG"()"@l;L0$ryG@2@2@t1$rmml1$S0$ryG@11$ryG@1@30$ryG@2@11$ryG@2@1@3@lnLn1$S;);)nLn0$S ;)t
  71.  
  72.  
  73. [main program]
  74. (0$rmml0$S(0$ryG"merge"@5'T'=@7@7@m;L(0$ryG"reverse"@5'T'=@7"()"@r;L(0$ryG"split"@5'T'=@7"()""()"@s;L(0$ryG"split*"@5'T'=@7@t;L(0$ryG"binsum"@5'T'=@7@7@b;L"(wrong option)";););););)nLn0$S ;)*
  75.  
  76. (@!@7@*@8;;)}
  77.  
  78. [end]
  79.