Обсуждение комбинатора Y в «Маленьком интригане»

Итак, я провел много времени, читая и перечитывая -окончание главы 9 в Маленьком интригане , где аппликативным комбинатором Y является разработан для функции length. Я думаю, что моя путаница сводится к единственному утверждению, которое противопоставляет две версии длины (до того, как комбинатор будет разложен):

A:
  ((lambda (mk-length)
     (mk-length mk-length))
   (lambda (mk-length)
     (lambda (l)
       (cond
         ((null? l) 0 )
         (else (add1
                ((mk-length mk-length)
                 (cdr l))))))))

B:
((lambda (mk-length)
      (mk-length mk-length))
    (lambda (mk-length)
      ((lambda (length)
         (lambda (l)
           (cond
             ((null? l) 0)
             (else (add1 (length (cdr l)))))))
       (mk-length mk-length))))

Страница 170 (4-е изд. В)утверждается, что A

возвращает функцию, когда мы применяем ее к аргументу

, а B

не возвращает функцию

, тем самым производя бесконечный регресс самостоятельных -приложений. Я озадачен этим. Если Б страдает от этой проблемы, то я не понимаю, как А ее избежать.

33
задан Filipp W. 29 December 2017 в 10:02
поделиться