よーしパパ、関数に名前を付けずに再帰させちゃうぞぉ!(その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は使えない。


さて、この自分のやり方の限界が見えてきた悪寒。