代码之家  ›  专栏  ›  技术社区  ›  TraumaPony

了解lambda微积分有多大帮助?[闭门]

  •  71
  • TraumaPony  · 技术社区  · 16 年前

    给所有知道的人 lambda calculus

    11 回复  |  直到 11 年前
        1
  •  84
  •   Norman Ramsey    12 年前

    lambda演算的好处在于它是一个非常简单的计算模型,相当于一台图灵机。尽管图灵机更像是汇编语言,但lambda演算更像是高级语言。如果你学会了 教堂编码 这将有助于您学习称为 连续传球方式

    lambda演算在实践中的主要用途是 它是研究新的编程语言思想的极好的实验室工具 . 如果你有一个新的语言功能的想法,你可以 你得到的东西是 有足够的表达能力来编程 简单到可以彻底研究 . 与程序员相比,语言设计者和理论家更多地使用这种方法。

    加深对计算的理解 通用图灵机程序设计 在lambda演算中。但这是基础数学,不是实用编程。

        2
  •  27
  •   EfForEffort    16 年前

    如果你想在任何地方编程 functional programming language

        3
  •  24
  •   Zorf    14 年前

    老实说,在函数式编程之前学习lambda演算让我意识到这两者与任何命令式编程都不相关。

    Lambda微积分是 函数式编程语言,一种深奥的语言,如果你喜欢的话,它是图灵tarpit;不经意间,这也是第一次。

    大多数函数式编程语言根本不要求您“学习”lambda演算,不管这意味着什么,lambda演算是极其微小的,您可以在不到一小时的时间内“学习”其公理。要知道它的结果,就像不动点定理一样,Church-Rosser定理等等与函数式编程无关。

    此外,lambda抽象通常被认为是“函数”,我不同意这一点,它们是算法,而不是函数,这是一个细微的区别,大多数“函数语言”更像经典数学那样处理它们的函数。

    然而,为了有效地使用Haskell,您确实需要了解某些 类型系统 ,这与lambda演算无关,systemf类型系统可以应用于所有“函数”,并且根本不需要lambda抽象。在数学中,我们通常说f:R^2->R:f(x)=x^2。我们可以说:f(x)=x^2::R->R->事实上,Haskell非常接近这个符号。

    Lambda演算是一种理论形式主义,Haskell的函数实际上并不比f:f(x)=x^2更为“Lambda抽象”。实际上,Lambda抽象有趣的是,它使我们能够将通常被视为“常量”的东西定义为“函数”,没有函数语言会这样做,因为计算开销巨大。Haskell等只是系统F的一种限制形式 应用于日常经典数学中使用的函数。Haskell中的函数当然不像lambda微积分中的函数那样是匿名形式的符号化归约函数。大多数函数式编程语言不是基于符号缩减的重写系统。Lisps在某种程度上是一个范例,但它本身就是一个范例,它的“lambda关键字”并不满足于称之为lambda演算。

        4
  •  16
  •   Community Mr_and_Mrs_D    7 年前

    我认为在实际编程中使用lambda演算是因为它是一个非常简单的系统,能够捕获抽象的本质(或者“匿名函数”或闭包,如果您愿意的话)。除此之外,我不认为它通常是必要的,除非您需要自己实现抽象(如TETA)( 114646 )提及)。

    我也完全不同意丹尼斯·布埃诺的观点( 114701 )世卫组织说,这对函数式编程至关重要。完全可以定义、使用或理解一种函数式语言,而无需任何lambda演算。为了理解函数式语言中术语的评估(在我看来,这与函数式语言的使用有些矛盾),您最好学习术语重写系统。

        5
  •  13
  •   Keith Pinson sumit vedi    13 年前

    我同意有人说,从理论上讲,不学习lambda演算就可以学习函数式编程,但它的优点是什么 学习lambda微积分?这并不是说要花费大量的时间。

    Y-combinator 这是一件美丽的事情。

        6
  •  11
  •   Mike Dunlavey    11 年前

    如果你只想成为一名技术人员并编写程序来做事情,那么你就不需要真正了解lambda演算、有限状态机、下推自动机、正则表达式、上下文无关语法、离散数学等。

    但是,如果你对这些东西背后的更深层次的奥秘感到好奇,你就可以开始怀疑这些问题是如何得到答案的。这些概念很美,会扩展你的想象力。顺便说一句,我也认为他们能使人成为更好的实践者。

    让我着迷的是明斯基的书《计算:有限和无限机器》。

        7
  •  5
  •   Tetha    16 年前

    lambda演算是一种计算模型,就像图灵机器一样。因此,如果你需要基于这个模型为一种语言实现一个特定的求值器,那么它是很有用的。然而,在实践中,你只需要基本的想法(呃,在函数体中放置语义正确的参数?)就可以了。

        8
  •  4
  •   Beta Beta    16 年前

    http://en.wikipedia.org/wiki/Lambda_Calculus

    或者,如果你想要更多,这里是我的博客,专门讨论lambda演算之类的东西

    http://weblogs.manas.com.ar/lziliani/

    作为计算的每个抽象,使用lambda演算,您可以对大多数编程语言中使用的东西进行建模,比如子类型。关于这方面的更多信息,关于lambda微积分在这个意义上的实际应用的最好的书之一是

    http://www.amazon.com/Types-Programming-Languages-Benjamin-Pierce/dp/0262162091/ref=sr_1_1?ie=UTF8&s=books&qid=1222088714&sr=8-1

        9
  •  4
  •   cdiggins    13 年前

    我发现Lambda演算有助于理解函数式编程在更深层次上的工作原理。特别是如何实现函数式语言。

    它使我更容易理解类型系统和评估策略等高级概念(如按名称调用与按值调用)。

    我认为使用基本函数编程技术不需要了解任何关于Lambda演算的知识。然而 理解lambda演算可以更容易地学习高级编程理论

        10
  •  3
  •   Robert Elwell    16 年前

    我还要提到的是,如果你在NLP领域做任何事情,lambda演算是组成语义的大量工作的基础。

        11
  •  0
  •   Nick Berardi    16 年前