为什么lambda演算不是很多(根本)?

时间:2011-02-07 23:32:31

标签: lambda-calculus

为什么纯粹的无类型lambda演算通常被描述为不可能使用?

使用合适的函数库,它与其他任何函数语言都不一样吗?

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:6)

理论上,理论和实践是相同的。实际上,他们不是。

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