为什么纯无类型的lambda演算经常被描述为不可能使用?
有了合适的函数库,它会不会和其他函数式语言一样呢?
发布于 2011-02-08 07:48:14
在理论上,理论和实践是一样的。在实践中,它们并不是。
从理论上讲,它只是另一种函数式语言。但你有没有考虑过实际使用教堂数字进行数学运算的性能影响?是的,你能做到。但是你的程序会运行得很慢,以至于它们看起来像是严重损坏了。实用的函数式语言必须找到在提供可以构建的抽象和使用常用事物的快速本机实现之间进行实用权衡的方法。
发布于 2011-02-08 08:36:43
速度不是一个大问题。例如,您可以决定使用教堂数字,但要优化实现,以便数字像往常一样表示--以一种对用户完全透明的方式。得到的数字显然在任何语言中都会表现得一样好--除非人们试图实现自己的算术运算,但发现它们不如实现中的运算快,或者当他们发现使用内置的7比相应的lambda表达式快得多时……但这指出了一个更糟糕的问题。在普通的lambda演算中,只有一个参数函数。这意味着你是在一种非常低级的汇编语言中工作,没有类型错误,因为一切都只是函数。事实上,如果你只使用简单的lambda演算,根本不会有错误。与机器代码的类比在这里非常相关:在这里,您也可以做任何您想做的事情--添加两个字符串,结果将是某个随机数。在lambda演算语言中,向一个数值函数发送一些列表编码,它将很乐意返回一个(伪造的)答案。
https://stackoverflow.com/questions/4927949
复制相似问题