“ Lambda the Ultimate”一词的由来和含义是什么?


43

几年来,我一直在纠缠于函数式编程语言,而我一直遇到这个短语。例如,这是“小计划者”的一章,该名字肯定早于博客。(否,该章无助于回答我的问题。)

我了解lambda的含义,匿名函数的概念既简单又强大,但是我无法理解在这种情况下“最终”的含义。

我看过这个短语的地方:

  1. 小策划人》第8章的标题
  2. 博客:http//lambda-the-ultimate.org/
  3. 一系列“ Lambda the Ultimate X”论文:http : //library.readscheme.org/page1.html

我觉得我在这里缺少参考资料,有人可以帮忙吗?


1
看起来这是一个受欢迎的博客的名称,但是如果有其他历史记录,我很感兴趣...
Klaim 2011年

1
您能否提供一些有关您看到过此短语的地方的参考?这种情况对寻找答案将大有帮助。
亚当·克罗斯兰

@Adam-添加了一些参考。
埃里克·威尔逊

论文系列链接重定向到cultureua.com有人可以提供更新的链接吗?
tejasbubane

Answers:


47

是的,它只是几篇论文标题中的重复出现,从70年代的几对夫妇开始,在那篇论文中,Sussman和Steele通过他们设计的名为“ Scheme ” 的极简Lisp方言演示了lambda演算在编程中的使用。目的。你可以在这里找到论文 ; 它们很有趣并且令人惊讶。

我不确定是否曾经明确指出过这一点,但是很明显(从上下文,阅读论文以及了解作者的一般背景和研究兴趣来看),该短语仅是一个引人注目的口号,因为他们认为Lambda抽象作为计算原语,不仅在形式上是通用的(能够以某种方式对任何程序进行编码,但很尴尬),而且在实践上是通用的,即任何其他语言都存在其他构造,即使那些构造是从头开始烘焙,可以使用基于lambda的语言以有效且自然的方式重新实现。

重复的短语导致明显的广义形式“对于所有X,lambda是最终X”,这就是我通常将“ Lambda the Ultimate”作为博客名称的意思,并指出LtU与编程语言有关设计和理论。具有讽刺意味的是,LtU可能也是找到可以告诉您有关lambda 不是最终实现的事情的人的最佳场所之一。:]

还要注意,Sussman是SICP的作者之一,SICP是一本很有影响力的教科书,它也使用Scheme语言,并花费了大量时间介绍lambda抽象概念。


2
+1用于查找那些经典论文。 小盖伊·斯蒂尔(Guy L. Steele)也写了有关Common LISP的书。对于盖伊来说,LISP和Scheme并没有走到尽头,他继续为JFortress和其他语言做出了贡献。盖伊还参与了《行话档案黑客词典》
John Tobler

@John Tobler:太好了!我只关注Sussman,因为他似乎更多地参与了Scheme,该方案与Lambda论文紧密相关。并不是要给人以斯蒂尔没有做过任何其他事情的印象,因为那确实与事实不符。:]
CA McCann

28

Lambda Ultimate指的是Lambda微积分的lambda可以有效地实现过去,现在和将来的每种编程语言中的每个内置概念。类,模块,包,对象,方法,控制流,数据结构,宏,连续性,协程,生成器,列表推导,流等。

碰巧的是,最终性质包括代表匿名功能。但是,lambda的核心并不仅限于匿名函数。他们以这种方式被教导,但是lambda的本质比没有名字的数学函数要深入得多。换句话说,我对以下问题表示怀疑:

我了解lambda的含义,匿名函数的概念既简单又强大,但是我无法理解在这种情况下“最终”的含义。

实际上,使用lambda作为语法抽象(“宏”)不是按值调用或应用(数学函数),对于理解lambda确实可以充当每个编程语言处理系统的核心。

对于理论:在朴素集理论中,与Bertrand Russell的悖论和理解(和扩展)公理有着有趣的联系。lambda是函数的作用,即set-builder表示法对集合的作用:lambda是function-builder表示法。(lambda(x)(* xx))与计算结果之间的重要差异(平方函数)之间通常会被忽略。如果一个人通常不能区分两者,即不能区分符号和符号(Church和Frege都犯了一个错误),那么这就会与悖论相违背。对于布斯和弗雷格来说,是贝特朗·罗素(Bertrand Russell)的塞维利亚理发师(Barber of Seville)证明了这个错误;对于职能和教会而言,这是艾伦·图灵(Alan Turing)的《停止甲骨文》。

请注意,这些悖论是好的,实用的东西。我们希望EVAL具有可表达性,并且我们希望Lambda不仅意味着功能。假设相反会导致矛盾,这是理想的结果。它可以作为一个很好的完整性测试:如果lambda仅表示功能,则它们几乎不可能是最终的。


Racket(以前称为PLT Scheme)继续提倡这样一种想法,即实际上可以完全从“只是lambda”构建实用的编程语言。

Shutt的Kernel认为lambda并不是最终的抽象。他认为,还有一个更原始的概念(对于希腊语,称为vau),萨斯曼将其称为FEXPR。

Felleisin和公司(用于Racket)通过使用阶段或元级别的概念来获得Shutt的vau的强大功能,这大约意味着通过多个翻译阶段(如预处理C,但在每个阶段使用相同的语言)运行源代码。 “步骤”和“步骤”实际上在时间上并不完全不同)。(因此,他们认为较高阶段的lambda近似于vau足够好。)实际上,他们认为阶段优于 FEXPR,恰恰是因为阶段有限。简而言之,“ FEXPR太强大了”(请参阅​​Shutt反对的Wand的著作)。

布赖恩·史密斯(Brian Smith)的3-Lisp,“编程语言中的过程反射”,试图通过将符号(符号/语言/程序)与符号(事物/引用/值/值/结果)区分开来,对LISP类语言的理论进行严格的重新表述。 )。http://dspace.mit.edu/handle/1721.1/15961

米切尔·旺德(Mitchell Wand)的“ FEXPR理论很琐碎”为肯特·皮特曼(Kent Pittman)为FEXPR设计的(临时的)棺材钉上了更多的钉子(像Felleisen一样,他反对FEXPR会使编译变得太难了)。

保罗·格雷厄姆(Paul Graham)在《论Lisp》中长篇大论地指出,真正的力量是作为语法(宏观)的转换器而不是作为价值(数学函数)的转换器的lambda。普洛特金(Plotkin)对应用型lambda演算的发展可以被视为某种对比,因为普洛特金(Plotkin)将丘奇(Church)的演算限制为按值/应用子集。当然,有效地处理应用部分非常重要,因此开发专门用于lambda的理论非常重要。(普洛特金和格雷厄姆并不反对。)

实际上,总的来说,Lambda作为Ultimate的概念仅仅是对效率与表现力之间永恒争论的一种扭曲。lambda是表达能力的最终工具,在经过足够的研究后,lambda最终还将被证明是提高效率的最终工具。换句话说,如果愿意的话,我们可以将编程语言的未来视为对如何有效实现lambda微积分的所有实际相关片段的研究。

Landin的“下700种编程语言”,http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf,是可访问的参考资料,有助于发展Lambda是终极的概念。


哇。起立鼓掌值得回答。有很多要遵循的指针。
hmijail'7

13

我想这只是对Sussman和Steele在1975年至1980年之间写的一些论文的引用:

  • Lambda:最终命令
  • Lambda:终极声明式
  • Lambda:终极GOTO
  • 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.