mapが動かない。
SICPのcons、car、cdrの再定義は動作した。
(gdb) run Starting program: /home/troter/work/jmc-lisp/jmcl > (set! cons (lambda (x y) (lambda (m) (cond ((eq? 'car m) x) (t y))))) (set! cons (lambda (x y) (lambda (m) (cond ((eq? (quote car) m) x) (t y))))) #<closure>(x y)((lambda (m) (cond ((eq? (quote car) m) x) (t y)))) > (set! car (lambda (z) (z 'car))) (set! car (lambda (z) (z (quote car)))) #<closure>(z)((z (quote car))) > (set! cdr (lambda (z) (z 'cdr))) (set! cdr (lambda (z) (z (quote cdr)))) #<closure>(z)((z (quote cdr))) > (car (cons 'a 'd)) (car (cons (quote a) (quote d))) a > (cdr (cons 'a 'd)) (cdr (cons (quote a) (quote d))) d >
電車の中で作ったnreverseが間違ってて焦った。負数を読み込む部分も間違っていて、一文字であれば何でもシンボルになってた(汗
今はこれが動かない。
> (map (lambda (x) (+ x 1)) ((lambda x x) 1 2 3 4 5)) (map (lambda (x) (+ x 1)) ((lambda x x) 1 2 3 4 5)) Program received signal SIGSEGV, Segmentation fault. eval (sexp=0x1) at eval.c:317 (gdb)
lambdaは動いているから、バグってるのはmap。
> ((lambda x x) 1 2 3 4 5) ((lambda x x) 1 2 3 4 5) (1 2 3 4 5) >