よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その5)

「mk-lengthを任意の関数に永遠に適用し続ける必要がないよ」的な素振りを見せつつ、このままじゃ何も状況は変わらなくね?
length0_4の要領でlength1_4とlength2_4を書くと

(define length1_4
  ((lambda (mk-length)
     (mk-length
      (mk-length mk-length)))
   (lambda (mk-length)
     (lambda (l)
       (cond
        ((null? l) 0)
        (else (+ 1 (mk-length (cdr l)))))))))

(define length2_4
  ((lambda (mk-length)
     (mk-length
      (mk-length
       (mk-length mk-length))))
   以下略))

ってなるし。
このままじゃ明らかにinfinite towerが必要だ。


読めなかった英語の部分に答えが書いてあったのか。
それともこの先に答えがあるのか。
後者を望む。