- 210 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 11:15:56 ]
- レスありがとうございます。
>>203 >>205 >>206 >(lambda (a b . restargs) ...) これは分かります。 この場合、2個以上の引数を渡すことが出来て、1番目はaに2番目はbに 残りはリストとしてrestagrsに渡されます。 > (lambda (var) . body) > ↓↑ > (lambda (x) (foo x) (bar x) (baz x)) > =(lambda (x) . ((foo x) (bar x) (baz x))) > →body = ((foo x) (bar x) (baz x))) lambda (x)がS式ということならば理解できます。 戻りますが、 (define-syntax letcc (syntax-rules () ((letcc var . body) (call/cc (lambda (var) . body))))) (letcc x 3) が(call/cc (lambda(x) (x 3)))に置き換わって継続x (今の場合何もしない)が実行されて3という結果を生じるのは間違い なさそうです。これが正しい理解ならば、xはvarに置き換えられますが、 3が(x 3)になるのが理解できません。bodyが3になるとして、 (lambda (x) . 3)だと意味がわかりませんよね。。
|

|