Y комбинатор в схеме с использованием определения
-
11-10-2019 - |
Вопрос
Чтобы узнать, для чего предназначен и используется комбинатор с фиксированной точкой, я написал свой собственный. Но вместо того, чтобы писать это со строгими анонимными функциями, как Пример Википедии, Я только что использовал определение:
(define combine (lambda (functional)
(functional (lambda args (apply (combine functional) args))))
Я проверил это с функционалами для факториала и Фибоначчи, и, кажется, работает. Соответствует ли это формальным определением комбинатора с фиксированной точкой?
Решение
Ответ нет, потому что в соответствии с Блог упоминается в предыдущем ответе, это даже не соответствует определению комбинатор, поскольку «комбинация» является свободной переменной.
Другие советы
РЕДАКТИРОВАТЬ: В то время как Chessweb или кто -либо еще подтверждает его ответ, временно считайте его ответ правильным, и этот ошибка.
Кажется, ответ - да. Очевидно, что появляется точно тот же комбинатор здесь, на полпути вниз по странице:
(define Y
(lambda (f)
(f (lambda (x) ((Y f) x)))))