本The little schemerでは、長さが1以下のリストのみをサポートするこの関数を見つけました。
(((lambda (mk-length) ; A.
(mk-length mk-length))
(lambda (mk-length)
(lambda (l)
(cond
((null? l ) 0)
(else (add1 ((mk-length eternity ) (cdr l))))))))
'(1))
段階的に学習し、 2以下の長さのリストのみをサポートする同様の関数を作成したいと考えています。
次のようなコードを提供して、この質問に答えないでください。
(((lambda (mk-length) ; B.
(mk-length mk-length))
(lambda (mk-length)
(lambda (l)
(cond
((null? l) 0 )
(else (add1((mk-length mk-length) (cdr l))))))))
'(a b c d))
この関数は任意の長さをサポートするためです。
そして、私はすでに次のような関数を書く方法を知っています:
(((lambda (mk-length) ; C.
(mk-length
(mk-length (mk-length eternity))))
(lambda (length)
(lambda (l)
(cond
((null? l) 0)
(else (add1 (length (cdr l))))))))
'(1 2)) ;;
私の目標を達成するために。しかし、このコードは最初のスニペットから一歩離れています。
たぶん、私は変更すべきではありません:
(lambda (mk-length) ; D.
(mk-length mk-length)