Pla*_*ure 3 language-agnostic lambda
我只是想知道在哪里可以找到一些语言无关的教程,了解lambda函数是什么,它们的用途是什么,以及不支持它们的语言的粗略等价物.
我特别喜欢有关常用符号的任何信息.
谢谢!如果我能详细说明,请告诉我.
编辑:哦,嘿,我忘记了什么.
就术语而言,lambda表达式或函数,匿名/委托函数和闭包之间有什么区别?
要求与语言无关的治疗是一种非常严格的限制.我可以推荐几个关于lambda演算的教程:
Prakash Panangden的教程深入了解技术深度,最后展示了如何使用定点组合器模拟递归.
如果你想在编程中理解lambda和高阶函数的使用,我认为你最好放弃你的不可知论.ML/Hope/Miranda/Haskell系列语言的一篇好文章是
就术语而言,lambda表达式或函数,匿名/委托函数和闭包之间有什么区别?
关于术语:
一个lambda表达式是由写作邱奇的演算发明了一个匿名的函数的原始方式.在lambda演算中,所有函数都是纯粹的:没有任何副作用.
McCarthy采用lambda表达式作为LISP (lambda (arguments ...) body),拼写为"lambda".苏斯曼和斯蒂尔后来使语义更忠实于教会的原创.表达式也被Haskell采用为\ arguments ... -> body,反斜杠看起来像一个lambda,但Haskell委员会使用右箭头代替点,因为他们想要点作为函数组合.这个表达被罗宾米尔纳用于ML,但拼写更加奇怪:fn args => body.所有这些表达式都被正确地称为lambda表达式,并且都表示匿名函数.只有在Haskell中,函数才是纯粹的; Lisp,ML和Scheme都允许body有副作用.
一个封闭的,当你你所得到的评价 lambda表达式或其他类型的嵌套函数.闭包不仅包含lambda表达式的编译代码,还包含有关自由变量的信息.(在Lisp和Scheme中,闭包存储自由变量的位置 ;在Haskell和ML中,闭包存储自由变量的值.)
一个匿名函数是一个比较笼统的概念并不必局限于一个简单的绑定和身体.例如,在Smalltalk中,"块"表示匿名函数,但块的主体是一系列语句,因此它绝对不同于lambda表达式.
我担心"委托功能"无法帮助你 在我的世界里,这个词用来完全描述其他东西.