Я пытаюсь сделать SICP упражнение 2.6 в стриже, который составляет около church numeralsновообращенной схема лямбда для быстрого закрытия
Нулевого определяются в схеме, как
(define zero (lambda (f) (lambda (x) x)))
превращается в быстрое закрытие я думаю
let zeroR = {(x:Int)->Int in return x}
let zero = {(f:(Int)->Int)->(Int)->Int in return zeroR}
Но проблема заключается в определении дополнения 1, который находится в схеме
(define (add-1 n)
(lambda (f) (lambda (x) (f ((n f) x)))))
Я пока не могу преобразовать это в версию быстрого закрытия. Некоторая идея?
Спасибо.
так что вы в основном хотите рекурсивное лямбда-выражения? – luk2302
Вот еще вопрос о внедрении кодировки в Swift: http://stackoverflow.com/questions/33597144/swift-higher-order-function-church-pair-aka-cons-with-generic-parameter-types. Я мало знаю об этом, но если я правильно понимаю, в Swift это невозможно. –
@ luk2302 Рекурсия отсутствует. – molbdnilo