Я понимаю, что церковная цифра выглядит как λ s . λ z . s (... n раз ...) . Это означает не что иное, как «функция примененная раз к функции ».s n z
Возможное определение функции следующее: . Глядя на тело, я понимаю логику функции. Однако, когда я начинаю оценивать, я застреваю. Я проиллюстрирую это на примере:т я м е с = λ м . λ n . λ s . м
Теперь в этой ситуации, если я сначала применю , я получу желаемый результат. Однако, если я , как я должен, потому что приложение ассоциативно слева, я получаю неправильный результат:( λ z . s
Я больше не могу уменьшить это. Что я делаю неправильно? Результат должен быть
Ответы:
Я думаю, что ваше сокращение является правильным (я только оценил это, хотя). В конце концов, вы не можете подать заявку к z , это никогда не появляется в термине. λ z . f f z является λ z . ( f f ) z , а не λ z . f ( f z ) . Функции в лямбда-исчислении принимают один аргумент; они эффективнокарри( λz, s s s z) Z λ z,ееZ λ z, ( фе) z λ z,е( фZ) : функция с двумя аргументами реализована как функция с одним аргументом, которая принимает первый аргумент и возвращает новую функцию с одним аргументом, которая принимает второй аргумент и возвращает результат.
Вы сделали ту же ошибку при определении церковных цифр. Церковная цифра для основана на составлении функции n раз. «Функция s применяется n раз к функции z » λ s . λ z . s ( s ( … sN N s n z . Вы написали, что функция s применяется n - 1 раз к функции s и, наконец, к z , что не кажется мне полезным термином.λs.λz.s(s(…sz)…)) s n−1 s z
, таким образом ( λ m n s . M ( n s ) ) ( λ s z . S ( s2×3 . Я позволю вам проверить, что оно сводится к λ s z . s ( s ( s ( s ( s ( s)(λmns.m(ns))(λsz.s(sz))(λsz.s(s(sz))) .λsz.s(s(s(s(s(sz)))))
источник