apply
applyのところを読んでいて、「あれ? じゃあlambdaと引数リストをくっつけたもの作って evalしても等価?」と思ってしまい
(define (append/log* . args) (print "args=" args) (eval #?=(cons 'append args) (null-environment 5)))
とかしてしまう.
gosh> (append/log* '(x y) '(z bang) ) args=((x y) (z bang)) #?="(stdin)":27:(cons 'append args) #?- (append (x y) (z bang)) *** ERROR: unbound variable: y Stack Trace: _______________________________________ 0 (x y) At line 81 of "(stdin)"
そりゃそうだ。sub-expも全て評価されてしまうのね。まだまだlisp慣れできない。
てかどうすりゃいいんだろう。悩もう。