「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が必要だ。
読めなかった英語の部分に答えが書いてあったのか。
それともこの先に答えがあるのか。
後者を望む。