2016-03-27 3 views
2

В последнее время я читал статьи об исчислении лямбда и кодовом кодировании, и хотя я сформировал дистанционное понимание того, что они влекут за собой, у меня возникли проблемы с поиском цели использования функций более высокого порядка для представления числовых значений или списков вместо использования числовых значений или списки напрямую.Какова цель церковного кодирования?

В программировании выполнение исчисления лямбда по законам, закодированным в Церкви, чрезвычайно сильно зависит от ресурсов машины и просто кажется значительно менее эффективной методикой делать что-либо. Я считаю, что программисты обычно считают это плохой практикой программирования, за исключением программных программистов или программистов Haskell, по нечетным причинам.

Есть ли реальная практическая причина использовать кодировку в Церкви? Или это полезно только в теоретических исследованиях?

+0

_ ["Церковное кодирование не предназначено для практической реализации примитивных типов данных. Его использование заключается в том, чтобы показать, что другие примитивные типы данных не обязаны представлять какие-либо вычисления."] (Https: //en.wikipedia. org/wiki/Church_encoding) _ Показ этого может привести к другим абстрактным изменениям, которые косвенные практические последствия, но напрямую это не так. –

+0

«Косвенные практические последствия», например, что? –

+0

Я имею в виду, что иногда «все ради академических исследований» являются доказательством концепций, поддерживающих обоснованность теорий, которые могут сказать, установить какой-то окончательный предел компактности синтаксиса данного класса языков (_e .g._ не может теоретически использовать меньше, чем _n_ символов для достижения определенного диапазона желаемых операций) или сказать, доказывая, что определенный язык не может выполнять какие-либо операции. (В аналогичном примере используется некоторая кодировка, показывающая, что стандартные регулярные выражения являются конечными автономиями, чтобы поддерживать утверждение, что –

ответ

3

Анализ формального языка становится технически проще, чем меньше. Если вы можете представлять, например, типы данных в виде функций (это то, что дает вам церковная кодировка), тогда вам не нужно добавлять типы данных на свой язык, чтобы иметь возможность исследовать, как вы можете манипулировать данными в нем.

Для практического языка программирования да, вы чаще всего добавляете поддержку типа данных на заказ; но вы все же можете определить их семантику, сводя их к функциям, а затем используя только семантику меньшего языка без типов данных.

+0

Используется ли она для теории компилятора из-за ее простоты? –

+2

Это полезно по той же причине, что вы не добавляете лишние аксиомы в математические теории. – Cactus

Смежные вопросы