Comment detail

アレイのuniq (Nested Flatten)
全然関数型言語っぽくないですが、
当時、結構こういう風に書いてるのも多かったようです。

実行結果:
 FUNCTION   EVALQUOTE   HAS BEEN ENTERED, ARGUMENTS..
UNIQ

((3 1 4 1 5 9 2 6 5 3 5 8 9 7 9))

END OF EVALQUOTE, VALUE IS ..
(3 1 4 5 9 2 6 8 7)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
DEFINE((
(REVERSE (LAMBDA (LST) (PROG (L RES)
                  (SETQ L LST)
            L     (COND ((NULL L) (RETURN RES)))
                  (SETQ RES (CONS (CAR L) RES))
                  (SETQ L (CDR L))
                  (GO L))))
 
(MEMBER (LAMBDA (ITEM LST) (COND
           ((EQ ITEM (CAR LST)) LST)
           (T (MEMBER ITEM (CDR LST))))))

(UNIQ (LAMBDA (LST) (PROG (L RES)
               (SETQ L LST)
         L     (COND ((NULL L) (RETURN (REVERSE RES))))
               (COND ((MEMBER (CAR L) RES) ())
                     (T (SETQ RES (CONS (CAR L) RES))))
               (SETQ L (CDR L))
               (GO L))))  ))

UNIQ((3 1 4 1 5 9 2 6 5 3 5 8 9 7 9))

Index

Feed

Other

Link

Pathtraq

loading...