Церковные Цифры: как закодировать нуль в лямбда-исчислении?

Я добавил бы понятие "Композиции классов по наследованию классов" (который получен на основании других ответов здесь). Тем путем "составленный" объект не заботится о внутренней структуре объекта, это зависит от - только его поведение, которое приводит к лучшей инкапсуляции и более легкой пригодности для обслуживания (тестирование, меньше деталей для заботы о). На языках, таких как C# и Java это часто крайне важно, так как нет никакого множественного наследования, таким образом, помогает, что ад графика наследования предотвращения u мог бы иметь.

8
задан unj2 28 October 2010 в 17:51
поделиться

2 ответа

«Функция, которая принимает функцию и второе значение и применяет функцию ноль раз к аргументу», конечно, не равна нулю. Это кодировка нуля. Когда вы имеете дело с простым лямбда-исчислением, вам нужно каким-то образом кодировать числа (а также другие примитивные типы), и для каждого из этих типов существует несколько требований. Например, одно требование для натуральных чисел - это умение прибавлять 1 к данному числу, а другое - способность отличать ноль от более крупных чисел (если вы хотите узнать больше, ищите «Арифметика Пеано»). Популярная кодировка, которую цитирует Дарио, дает вам две вещи: а также представляет собой целое число N функцией, которая что-то делает (закодированная как аргумент f ) N раз, что является своего рода естественным способом использования натуральных чисел.

Существуют и другие кодировки. которые возможны - например, как только вы можете представить списки, вы можете представить N как список из N элементов. У этих кодировок есть свои плюсы и минусы, но приведенная выше является наиболее популярной.

15
ответ дан 3 November 2019 в 12:49
поделиться

См. википедия :

0 ≡ λf.λx. x
1 ≡ λf.λx. f x
2 ≡ λf.λx. f (f x)
3 ≡ λf.λx. f (f (f x))
...
n ≡ λf.λx. fn x
15
ответ дан 3 November 2019 в 12:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: