MEMO: 遅延評価と可変長引数
可変長の引数を渡されたとき、結果は
( (lambda (t . x) x) 1 2 3) ⇒ (2 3) (let ( (y 2) ) ( (lambda (t . x) x) 1 y 3) ) ⇒ (2 3)
にしたいんだけど*1、遅延評価を thunk 方式にすると、2個目の式は実質的に
(let ( (y 2) ) ( (lambda (t . x) x) (lambda () 1) (lambda () '(y 3) ) ) ) ⇒ (y 3) (let ( (y 2) ) ( (lambda (t . x) x) (lambda () 1) (lambda () y) (lambda () 3) ) ) ) ⇒ (## )
のどっちかになるんだけど*2、コレは結果が異なるんで宜しくない。
かといって '(y 3) のクォートを外すのも評価されちゃうんで宜しくない。
どうすれば良いんだろうか。