Не может вывести числовое представление (церковное кодирование) лямбда-выражения λx.λy.x(xy)
У меня есть лямбда-выражение: λx.λy.x(xy)
и я должен вывести целочисленное представление этого. Я много читал о церковных кодировках и церковных цифрах, но не могу найти, что это за число. Можете ли вы объяснить это мне так, как трехлетний ребенок может понять или направить меня к ресурсу лучше, чем википедия?
1 ответ
Решение
Церковная кодировка целых чисел заключается в следующем:
"0" ≡ (λf.(λx.x))
: Думать о(λf.(λx.x))
как значение: дано функциюf
и элементx
результатx
: это похоже на применение функцииf
ноль разx
,"1" ≡ (λf.(λx.(fx)))
: Думать о(λf.(λx.(fx)))
как значение: дано функциюf
и элементx
результат(fx)
: что следует считать применимымf
вx
или, в более стандартных математических обозначениях, таких как f (x)."2" ≡ (λf.(λx.(f(fx))))
: Думать о(λf.(λx.(f(fx))))
как значение: дано функциюf
и элементx
результат(f(fx))
: что следует считать применимымf
вx
дважды или, в более стандартных математических обозначениях, например, f (f (x))."3" ≡ (λf.(λx.(f(f(fx)))))
: Думать о(λf.(λx.(f(f(fx)))))
как значение: дано функциюf
и элементx
результат(f(f(fx)))
: что следует считать применимымf
вx
три раза или, в более стандартных математических обозначениях, например, f (f (f (x))).
Я надеюсь, что вы видите образец (и логику позади). В твоем случае, (λx.(λy.(x(xy))))
является церковной кодировкой числа 2
(используя альфа-эквивалентность, конечно).
Статья в википедии на самом деле вполне понятна. Что ты не понимаешь?