よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その7)
どこまでやったけな...。多分この前は、
((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (+ 1 ((mk-length eternity) (cdr l))))))))
を、
((lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (+ 1 ((mk-length eternity) (cdr l))))))) (lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (+ 1 ((mk-length eterinty) (cdr l))))))))
と
(lambda (l) (cond ((null? l) 0) (else (+ 1 (((lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (+ 1 ((mk-length eternity) (cdr l))))))) eternity) (cdr l))))))
を経て
(lambda (l) (cond ((null? l) 0) (else (+ 1 ((lambda (l) (cond ((null? l) 0) (else (+ 1 ((eternity eternity) (cdr l)))))) (cdr l))))))
に書き換えた。
その要領で、
((lambda (mk-length) (mk-length mk-length)) (lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (+ 1 ((mk-length mk-length) (cdr l))))))))
を変形してみると、
(lambda (l) (cond ((null? l) 0) (else (+ 1 (((lambda (mk-length) (lambda (l) (cond ((null? l) 0) (else (+ 1 ((mk-length mk-length) (cdr l))))))) ...
自分はここで止まってしまう。eternityじゃなくて、mk-length。
だけど、ここじゃmk-lengthは使えない。
さて、この自分のやり方の限界が見えてきた悪寒。