3

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)
4

2 に答える 2