mc #5082(2008/01/01 01:57 GMT) [ Other ] Rating1/1=1.00
全然関数型言語っぽくないですが、 当時、結構こういう風に書いてるのも多かったようです。 実行結果: 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))
Rating1/1=1.00-0+
[ reply ]
mc
#5082()
[
Other
]
Rating1/1=1.00
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))Rating1/1=1.00-0+
[ reply ]