Tag: lambda calculus

什么叫/ cc?

我已经多次尝试了解延续的概念,并且呼吁/ cc 。 每一次尝试都是失败的。 有人可以解释我这些概念,理想情况下比维基百科或其他SOpost更实际的例子。 我有Web编程和面向对象的背景。 我也了解6502程序集,并与Erlang有一个小小的争执。 不过,我还是不能把头绕在call / cc上。

为什么Haskell(GHC)如此快速?

Haskell(与GHC编译器) 比你想象的要快很多 。 正确使用,它可以接近低级语言。 (Haskellers最喜欢的做法是尝试在C的5%以内(甚至可以打败它,但这意味着你正在使用一个低效的C程序,因为GHC把C编译成Haskell)。我的问题是,为什么? Haskell是声明式的,基于lambda演算。 机器体系结构显然是必不可less的,大致基于图灵机。 事实上,Haskell甚至没有具体的评估顺序。 另外,不用处理机器数据types,而是始终创build代数数据types。 最奇怪的是高阶function。 你可能会认为,即时创build函数并将其扔掉,会使程序变慢。 但是使用更高阶的函数实际上使得Haskell更快。 实际上,它似乎优化了Haskell代码,您需要使其更加优雅和抽象,而不是更像机器。 如果Haskell的更高级的function没有改进,那么它的性能甚至都不会影响它的性能。 对不起,如果这听起来简单,但这里是我的问题: 为什么Haskell(与GHC编译)如此之快,考虑到其抽象的性质和与物理机器的差异? 注意:我说C语言和其他命令式语言的原因有点类似于图灵机(但是不像Haskell类似于Lambda微积分),在命令式语言中,有一个有限数量的状态(又称行号) ,以及一个磁带(公羊),这样的状态和当前磁带决定如何做磁带。 请参阅维基百科条目, 图灵机等价物 ,以便从图灵机转换到计算机。

“米尔纳 – 辛德雷的哪一部分你不明白?

我现在找不到,但我发誓曾经是一件以不朽名言为特色的T恤衫: 什么部分 你不明白吗? 就我而言,答案就是……所有这一切! 特别是,我经常在Haskell的论文中看到这样的符号,但是我不知道它的意思。 我不知道它应该是什么math分支。 我当然认识到希腊字母的字母,象“∉”这样的符号(通常意味着某些东西不是集合中的一个元素)。 另一方面,我从来没有见过“⊢”( 维基百科声称它可能意味着“分区” )。 我也不熟悉在这里使用的vinculum。 (通常它表示一个分数,但在这里似乎不是这种情况。) 我想,SO不是解释整个Milner Hindleyalgorithm的好地方。 但是如果至less有人能告诉我从哪里开始去理解这个符号之海意味着什么,这将是有帮助的。 (我相信我不能是唯一想知道的人…)