大多数编程语言都使用lambdas / closures。 建议哪种语言不可知源是最好的学习Lambda基础知识?
使用不同语言的Lambda / Closures:
答案 0 :(得分:8)
如果您只想要容易消化的内容,请阅读An Introduction to Lambda Calculus and Scheme。当然,它与语言无关,但Scheme的实现非常接近。
为了更深入的了解,请阅读Types and Programming Languages - 本杰明皮尔斯。编程语言理论与lambda演算的彻底研究。完全与语言无关。
答案 1 :(得分:4)
我认为lambda在Lisp中是最简单的,因为它是为那种东西设计的,而方言往往是最简单的。
并非巧合,the greatest computer science book ever written使用Scheme!这是SICP's introduction to lambdas。
答案 2 :(得分:3)
Lambda Calculus与语言无关。答案取决于“基础”的含义。在您选择任何语言的那一刻,您就失去了不可知的要求。
Javascript有闭包。我也将它添加到列表中。 Java还没有 -
我认为它会回到你打算最终使用它们的地方。回到Lisp或Scheme,因为他们是来源,如果你想成为老学校。如果您最终会使用主流商业语言,请选择Javascript或C#或Python。
答案 3 :(得分:2)
对于想要学习理论基础的初学者,danben对皮尔斯的书的建议是无与伦比的。
但是从你给出的列表中,听起来你想要的是如何有效地使用第一类函数值编程,这是lambda
评估的内容。你不会在与语言无关的包中获得这种经验,信息或直觉。更糟糕的是,在实际语言中,许多匿名函数是通过部分应用Curried函数而不是通过显式lambda
创建的;大多数人使用一流的功能大量发现lambdas相当烦人且难以阅读。
以此为背景,这里有两条建议:
如果您已经开始学习lambda
,请使用Scheme执行某些操作。类似于一流函数的Schemer和Scheme的符号强制程序员比其他许多函数语言更明确的lambdas。
作为一名初学者,您可能最好先了解一下为什么人们想要开始使用这些一流的功能。在这种情况下,请阅读John Hughes的Why Functional Programming Matters。休斯的论文使用的符号有点与语言无关;它不是任何当前流行语言的符号,但它有点类似于Caml,F#,Haskell和ML。
答案 4 :(得分:1)
首先,我不会将它们视为“语言独立”的东西。我建议先实际学习它们,首先在Javascript中使用它们,然后扩展到另一种语言(如lisp,C#)。然后,如果你觉得有必要更进一步,那就要学习一般的理论知识。