2

最近我在阅读有关 Lambda 演算和 Church Encoding 的文章,虽然我对它们的含义有了一个初步的了解,但我很难找到使用高阶函数来表示数值或列表而不是直接使用数值或列表的目的.

在编程中,对 Church-Encoded 表达式执行 Lambda 演算非常耗费机器资源,而且似乎是一种效率相当低的技术。我发现程序员通常认为这是不好的编程习惯,除了 Scheme 或 Haskell 程序员,出于奇怪的原因。

使用 Church 编码是否有任何实际的实际理由?还是只对理论研究有用?

4

1 回答 1

5

(正式)语言的分析在技术上越小越简单。例如,如果您可以将数据类型表示为函数(这是 Church 编码为您提供的),那么您不需要将数据类型添加到您的语言中,只是为了能够检查如何操作其中的数据。

对于实用的编程语言,是的,您通常会添加定制的数据类型支持;但是您仍然可以通过将它们简化为函数然后仅使用较小的无数据类型语言的语义来定义它们的语义。

于 2016-03-30T03:47:18.180 回答