4

为什么纯粹的无类型 lambda 演算经常被描述为无法使用?

有了合适的函数库,它会不会与任何其他函数式语言大致相同?

4

2 回答 2

12

速度不是大问题。例如,您可以决定使用教堂数字,但优化实现,使数字像往常一样表示 - 以对用户完全透明的方式。生成的数字显然与任何语言的性能一样好——除非人们尝试实现自己的算术运算并发现它们不如实现中的运算快,或者当他们发现使用内置7函数要快得多时比相应的 lambda 表达式...但这点在很多更糟糕的问题。在普通的 lambda 演算中,只有一个参数函数。这意味着您正在使用一种非常低级的类汇编语言,其中没有类型错误,因为一切都只是函数。事实上,如果你只坚持简单的 lambda 演算,就完全没有错误。与机器代码的类比在这里非常相关:在那里,你也可以做任何你想做的事情——添加两个字符串,结果将是一些随机数。在 lambda 演算语言中,将一些列表编码发送到数字函数,它会愉快地返回一个(虚假的)答案。

于 2011-02-08T00:36:43.090 回答
6

理论上,理论和实践是一样的。在实践中,它们不是。

从理论上讲,它只是另一种功能语言。但是您是否考虑过实际使用 Church 数字进行数学运算的性能影响?是的,你可以做到。但是你的程序会运行得如此缓慢,以至于它们看起来会严重损坏。实用的函数式语言必须找到方法在提供可构建的抽象和使用常用事物的快速、本机实现之间做出务实的权衡。

于 2011-02-07T23:48:14.390 回答