是否有可能构建一个相对快速的无类型 lambda 演算机?

Posted

技术标签:

【中文标题】是否有可能构建一个相对快速的无类型 lambda 演算机?【英文标题】:Is it possible to build a comparatively fast untyped lambda calculus machine? 【发布时间】:2011-08-28 03:20:39 【问题描述】:

纯无类型 lambda 演算是一个强大的概念。然而,为现实世界使用构建机器或解释器通常被描述为(几乎)不可能。我想对此进行调查。理论上是否可以构建一个比较快的无类型 lambda 演算机?

我所说的相对较快通常是指在相似数量的资源(门、操作、物理空间、功耗等)内,可与现代类图灵架构相媲美,用于相似范围的任务。

我对机器的实现和架构层没有任何限制,除了它必须以某种方式在物理上和某种程度上可以现实地实现。对如何处理 IO 也没有限制。

如果可能,主要挑战是什么? 如果不可能,为什么以及如何? 该领域的研究现状如何? 哪些领域和科目最相关?

对于基于 lambda 演算的计算机架构的可行性,我们了解多少?

类似的问题:

Machine model for functional programming Historical reasons for adoption of the Turing machine as the primary model

【问题讨论】:

+1 回答一个有趣的问题,尽管您可能会在 cstheory.stackexchange.com 上得到更好的答案 嗯,我没想到。我现在将添加指向上述 ctheory 相关问题的链接。如果可能,版主可以随意移动问题。 【参考方案1】:

首先,即使在现有架构上,也可以高效地将 lambda 演算编译为机器代码。毕竟,scheme 是 lambda 演算加上一点额外的,它可以高效地编译。然而,scheme & co 是经过严格评估的 lambda 演算。也可以在非严格评估下有效地编译 lambda 演算!关于这一点,请参阅 SPJ 的两本书了解一些背景:http://research.microsoft.com/en-us/um/people/simonpj/papers/papers.html

另一方面,如果我们构建为函数式语言设计的硬件,我们可以将代码编译到该硬件并且确实做得很好,这也是事实。我所知道的最好的新东西是 Reduceron:http://www.cs.york.ac.uk/fp/reduceron/

非常引人注目的 Reduceron 性能的关键在于它是围绕并行图约简构建的,旨在利用在约简 lambda 演算方程中明确显示的并行机会。

【讨论】:

令人兴奋的东西! :) 非常感谢! 它不是 lambda演算。 @cdiggins -- 你是说提供的两个链接中描述的技术不能用于编译纯 lambda 演算!?回想一下,纯(类型化)lambda 演算是 Haskell 的一个子集... 我只是指出,使用常量而不是教堂数字不是“纯 lambda 演算”。如果你使用教堂数字(或任何编码),那么做真正的数学会很慢。 教会数字比机器整数慢,这是算法复杂性的问题,而不是实现的问题。此外,可以将前者编译为后者。

以上是关于是否有可能构建一个相对快速的无类型 lambda 演算机?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法规避 lambda 表达式的类型化?

外部 Http 调用上的无服务器框架/Lambda 错误

是否存在多个读取或写入线程的无锁队列?

带有 AWS Lambda 错误“找不到模块”的无服务器框架

什么是位图?

什么是位图?