Lisp Scheme Part19
レス数が950を超えています。1000を超えると書き込みができなくなります。
0982デフォルトの名無しさん
2008/03/10(月) 17:58:06(lambda (l)
(cond
((null? l) 0) ; -----�@
(else (add1 (((lambda (mk-length)
(lambda (l)
(cond
((null? l) 0) ; -----�A
(else (add1 ((mk-length eternity) (cdr l))))))) eternity) (cdr l)))))) ;-----�B
ここで、nullリストかatomを一つだけ持つリストを渡してやると、それぞれ
上に示しました�@、�Aで処理が終了するので、正しい長さである0と1が返って
きます。疑問はありません。
ただ、定義上与えてはいけない二つのatomを持つリスト '(a b) などを
渡した場合を考えると、�Bの部分が実行されることになりますが、
add1の引数にlambda関数を渡すことになるので、引数として数字を一つだけ
とる仕様のadd1関数の文法に違反します。nullリストかatomを一つだけ持つ
リストを渡している限り�Bの部分は評価されないので、それはOKということに
なるのでしょうか?
レス数が950を超えています。1000を超えると書き込みができなくなります。