Questions tagged «lambda-calculus»

6
您不了解Hindley-Milner的哪一部分?
我发誓曾经有一件不朽的字样出售的T恤: 哪一部分 你不明白吗 就我而言,答案将是……全部! 特别是,我经常在Haskell论文中看到这样的符号,但是我不知道它的含义。我不知道它应该是数学的哪个分支。 我当然知道希腊字母的字母和诸如“∉”之类的符号(通常表示某些东西不是集合的元素)。 另一方面,我以前从未见过“⊢”(维基百科声称这可能意味着“分区”)。我也不熟悉这里使用的vinculum。(通常情况下,它表示一个级分,但是这并不出现在这里是这种情况。) 如果有人至少可以告诉我从哪里开始寻找理解符号海的含义的方法,那将是有帮助的。

4
为什么Haskell(GHC)这么快?
Haskell(使用GHC编译器)比您期望的要快得多。正确使用它可以接近低级语言。(Haskellers最喜欢做的事情是尝试获得5%的C(甚至击败它),但这意味着您正在使用效率低下的C程序,因为GHC将Haskell编译为C。)我的问题是,为什么? Haskell是声明性的,基于lambda演算。机器架构显然必须基于图灵机。实际上,Haskell甚至没有特定的评估顺序。另外,无需处理机器数据类型,而是始终创建代数数据类型。 最奇怪的是高阶函数。您可能会认为,即时创建函数并将其扔掉会使程序变慢。但是使用高阶函数实际上会使Haskell更快。实际上,为了优化Haskell代码,您似乎需要使其更优雅,更抽象,而不是像机器一样。如果不能改善Haskell的更高级功能,它们似乎都不会影响它的性能。 抱歉,这听起来很抱歉,但这是我的问题:考虑到Haskell的抽象性质以及与物理机器的区别,为什么Haskell(与GHC编译)这么快? 注意:我说C和其他命令式语言在某种程度上类似于图灵机的原因(但在某种程度上来说,Haskell与Lambda微积分不一样)是,在命令式语言中,您具有有限数量的状态(即行号)以及Tape(撞锤),以便状态和当前磁带决定对磁带执行什么操作。从图灵机到计算机的过渡,请参阅Wikipedia条目,图灵机等效项。

2
为什么λ微积分的最佳评估器无需公式就可以计算较大的模幂?
教堂数字是自然数作为函数的编码。 (\ f x → (f x)) -- church number 1 (\ f x → (f (f (f x)))) -- church number 3 (\ f x → (f (f (f (f x))))) -- church number 4 整整齐齐地,您只需应用两个教堂数字即可对其求幂。也就是说,如果您将4应用于2,则会得到教堂编号16或2^4。显然,这完全不可行。教堂号码需要线性的存储空间,而且速度非常慢。计算类似的10^10内容-GHCI可以快速正确回答-可能会花费一些时间,而且无论如何都无法容纳计算机的内存。 最近,我一直在尝试使用最佳λ评估器。在测试中,我不小心在最佳λ计算器上键入了以下内容: 10 ^ 10 % 13 它应该是乘法,而不是幂。在我不由自主地终止永远运行的程序之前,它满足了我的要求: 3 { iterations: 11523, applications: 5748, …

11
知道lambda演算有多大帮助?[关闭]
从目前的情况来看,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 对所有了解lambda演算的人:关于编程,它为您带来了什么好处?您会建议人们学习它吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.