我是一名大学生,我们目前正在学习Lambda演算。但是,我仍然很难确切理解为什么这对我有用。我意识到,如果您执行大量功能编程,它可能很有用,但是我认为它并不是真正需要学习功能编程,您会怎么看?

其次,在计算机科学领域内,在功能编程语言之外,是否有任何对lambda演算的用途?

有帮助吗?

解决方案

lambda演算是逻辑,类别理论,类型理论,形式验证的基础,……基本上与编程语言语义和形式逻辑有关。这是一种基本的形式主义,以至于在这些领域工作的人们甚至都不质疑它的好处。

我认为这对于理解功能编程非常有用,因为它为您提供了功能编程的本质。功能,应用,替代。基于此,您可以在有关功能程序和转换的推理方面建立自己的技能。高阶功能是轻而易举的。

当然,如果没有lambda演算,您可以学习功能编程,但是如果没有它,您将永远不会真正理解功能编程。

其他提示

您要求在计算机科学和逻辑之外进行应用。很容易找到,例如,在代数拓扑中,有一个笛卡尔封闭类别的空间很方便,请参阅 方便的拓扑空间 在Nlab上。与笛卡尔封闭类别相对应的正式语言正是$ lambda $ -calculus。让我用一个非常简单的示例说明这是如何方便的。

首先,作为热身练习,假设有人问您是否功能$ f: mathbb {r} to mathbb {r} $由$ f(x)= x^2 e^x + log(1 +)定义x^2)$是可区分的。您实际上不必证明它是,您只会观察到它是可区分功能的组成,因此可以区分。换句话说,您根据 形式 定义。

现在为真实示例。假设有人问您是否函数$ f: mathbb {r} to mathbb {r} $由$$ f(x)= left( lambda f: mathcal {c})定义。是连续的。同样,我们可以立即回答“是”,因为该功能是使用$ lambda $ -calculus定义的,并从连续地图$ max $,$ int $,$ sin $等开始。

$ lambda $ -calculus的各种扩展使在其他领域做同样的事情成为可能。例如,因为 光滑的拓扑 是笛卡尔封闭类别,使用$ lambda $ -calculus定义的任何映射,从衍生物开始和真实的环结构(如果愿意,可以自动平滑)。 (实际上,光滑的纹章的主要力量是存在尼尔肽的无限量,这使您可以有意义地说出诸如“我们将光盘无限薄层薄层薄层三角形三角形”之类的话。)。

查看$ lambda $ -calculus的一种方法是一种简单而简洁的参数程序模型。您几乎以任何具有函数,过程或方法的编程语言以及具有模块或能够参数类型的任何语言来参数化代码。参数化是重用的一种形式。因为$ lambda $ -calculus是如此简单,所以许多编程语言之间的共同点使您能够参数代码,特别清楚地脱颖而出。

当然,在不知道$ lambda $ -calculus的情况下,可以成为一个非常好的程序员,但是您错过了也非常有用的美丽的东西。

Microsoft Linq(语言集成查询)移植功能编程功能到程序语言中。它可以广泛而直接地使用$ lambda $ -calculus来解开依赖关系,并将表达树的部分隔离到数据库服务器。这是一个极其实用的应用,具有较高的商业价值。

我已经使用功能性语言写了一个小型的商业应用程序,我可以向您保证,尽管对学者和研究人员来说非常值得,但它们在商业上的用处不如他们的堂兄。实际上,这是课程的马问题,最实用的是一种可以根据需要进行程序性或功能性的语言。结果,在支持LINQ(例如$ lambda $ -expressions)中引入(C#)引入的功能功能,在数据库查询的上下文之外获得了相当多的用途。

因此,当您最终发现自己不愿意做事,因为您想获得付款,您可能会发现$ lambda $ -calculus比您预期的更有用 惯于 使用功能语言。

许可以下: CC-BY-SA归因
不隶属于 cs.stackexchange
scroll top