Y комбинатор в схеме, используя определение - PullRequest
5 голосов
/ 14 января 2011

Чтобы узнать, что такое комбинатор с фиксированной запятой и для чего он используется, я написал свой собственный. Но вместо того, чтобы писать его строго анонимными функциями, такими как пример Википедии , я просто использовал определение:

(define combine (lambda (functional)
                  (functional (lambda args (apply (combine functional) args))))

Я проверил это с функционалами для факториала и фибоначчи, и, похоже, это работает. Соответствует ли это формальному определению комбинатора с фиксированной запятой?

Ответы [ 2 ]

5 голосов
/ 14 января 2011

РЕДАКТИРОВАТЬ: хотя шахматная паутина или кто-либо еще подтверждает его ответ, временно считайте его ответ правильным, а этот неправильным.


Кажется, ответ - да.Очевидно, тот же самый комбинатор появляется здесь , посередине страницы:

(define Y
    (lambda (f)
      (f (lambda (x) ((Y f) x)))))
3 голосов
/ 17 мая 2011

Ответ отрицательный, потому что согласно блогу, указанному в предыдущем ответе , он даже не соответствует определению комбинатор , поскольку «комбинат» является бесплатным переменная.

...