Lisp Scheme Part20 at TECH
[2ch|▼Menu]
210:デフォルトの名無しさん
08/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)だと意味がわかりませんよね。。


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5495日前に更新/87 KB
担当:undef