Questions tagged «lambda-calculus»

λ演算是用于函数定义,函数应用和递归的形式系统,它构成函数编程的数学基础。


2
Y组合器如何举例说明“ Lambda演算不一致”?
在定点组合器的Wikipedia页面上,写着相当神秘的文字 Y组合器是导致Lambda微积分不一致的一个示例。因此,应该怀疑。但是,仅在数学逻辑中定义时考虑Y组合器是安全的。 我读过某种间谍小说吗?“ -calculus”是“不一致的”并且应该“被怀疑”的说法在世界上意味着什么?λλ\lambda

2
量子λ演算
通常,有3种流行的方法来考虑计算:图灵机,电路和lambda演算(我将其用作大多数功能视图的全部)。这三种方法都是思考不同类型问题的卓有成效的方法,因此,不同领域使用不​​同表述。 但是,当我使用量子计算时,我只会考虑电路模型。最初,质量控制是用量子图灵机来定义的,但是据我了解,这个定义(虽然等同于量子电路,如果两者都经过精心制定的话)还没有那么有效。我完全不熟悉第三个公式(就Lambda微积分或类似的功能设置而言)。因此,我的问题是: 量子λ演算(或其他功能范例)的有用定义是什么? 通过使用此公式而不是电路模型,QIP的哪些子领域会获得更深入的了解? 笔记 我知道我忽略了许多其他流行的形式主义,例如元胞自动机,RAM模型等。我之所以将它们排除在外是因为我没有经典地考虑这些模型的经验,更不用说量子论了。 我也知道,在量子环境中还有流行的替代方法,例如基于测量的,拓扑的和绝热的。我不讨论它们,因为我不熟悉经典的对应语言。


2
Lambda微积分纯粹是语法吗?
我已经阅读了几周有关Lambda演算的信息,但是我还没有看到与现有数学函数有实质性区别的任何东西,我想知道这是否只是一种记号问题,或者是否有任何新的含义由lambda演算公理创建的属性或规则不适用于每个数学函数。因此,例如,我读过: “可以有匿名函数”:Lambda函数不是匿名函数,它们全称为lambda。如果名称不重要,则可以用数学符号将相同的变量用于不同的功能。例如,Galois Connection中的两个函数通常都被称为*。 “函数可以接受函数作为输入”:可以使用普通函数来完成此操作。 “功能是黑匣子”:只是输入和输出也是数学函数的有效描述... 这似乎是一个讨论或自以为是的问题,但我认为应该对这个问题有一个“正确”的答案。我想知道lambda演算是否只是用于数学函数的符号或语法约定,或者lambda和普通函数之间是否存在实质性或语义上的差异。

2
具有联合类型的lambda项的特征
许多教科书都涵盖了lambda微积分中的交集类型。交集的键入规则可以定义如下(在带有子类型的简单键入的lambda演算的顶部): Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I)Γ⊢M:T1Γ⊢M:T2Γ⊢M:T1∧T2(∧I)Γ⊢M:⊤(⊤I) \dfrac{\Gamma \vdash M : T_1 \quad \Gamma \vdash M : T_2} {\Gamma \vdash M : T_1 \wedge T_2} (\wedge I) \qquad\qquad \dfrac{} {\Gamma \vdash M : \top} (\top I) 交叉点类型在归一化方面具有有趣的属性: 一个lambda长期不使用键入的⊤I⊤I\top I治当且仅当它是强烈正火。 一个lambda项接受一个不包含的类型,只要⊤⊤\top它具有正常形式。 如果不添加交集而是添加并集怎么办? Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2)Γ⊢M:T1Γ⊢M:T1∨T2(∨I1)Γ⊢M:T2Γ⊢M:T1∨T2(∨I2) \dfrac{\Gamma \vdash M : T_1} {\Gamma \vdash M : T_1 \vee T_2} (\vee …

4
定点组合器(Y组合器)的清晰直观的推导?
(无类型)lambda演算()中的定点组合器FIX(aka Y组合器)定义为:λλ\lambda FIX≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))≜λf.(λx.f (λy.x x y)) (λx.f (λy.x x y))\triangleq \lambda f.(\lambda x. f~(\lambda y. x~x~y))~(\lambda x. f~(\lambda y. x~x~y)) 我了解它的目的,并且可以很好地跟踪其应用程序的执行。我想了解如何从第一原理中得出FIX。 这是我尝试自己导出时所得到的: FIX是一个函数:FIX ≜λ…≜λ…\triangleq \lambda_\ldots FIX使用另一个函数fff使其递归:FIX ≜λf.…≜λf.…\triangleq \lambda f._\ldots 函数f的第一个参数是函数fff的“名称”,用于打算递归应用程序的地方。因此,f的第一个参数的所有出现fff都应由一个函数替换,并且该函数应预期f的其余参数fff(假设f带有fff一个参数):FIX ≜λf.…f (λy.…y)≜λf.…f (λy.…y)\triangleq \lambda f._\ldots f~(\lambda y. _\ldots y) 这是我不知道如何在推理中“迈出一步”的地方。小椭圆表示我的FIX缺少了什么(尽管我只能通过将其与“真实” FIX进行比较来知道)。 我已经阅读了Types and …


5
带有反射的
我在寻找一个简单的演算,支持推理反射,即内省和正在运行的程序的操作。 是否存在未类型化的微积分扩展,从而使人们可以将λ-项转换为可以在语法上进行处理然后进行评估的形式?λλ\lambdaλλ\lambda 我认为微积分有两个主要附加术语: :取 v和产生的表示 v易于进行句法操纵。reflect vreflect v\mathtt{reflect}\ vvvvvvv :对一个术语进行句法表示并对其进行评估。eval veval v\mathtt{eval}\ v 为了支持反思,需要术语的句法表示。它看起来像: 将被表示为术语(大号阿中号 - [R (ë )),其中 [R (é )是的反射版本 ë,λx.eλx.e\lambda x.e(LAM R(e))(LAM R(e))(\mathsf{LAM}\ R(e))R(e)R(e)R(e)eee 将被表示为项(A P P R (e )R (e ')),并且e e′e e′e\ e'(APP R(e) R(e′))(APP R(e) R(e′))(\mathsf{APP}\ R(e)\ R(e')) 将被表示为(V A R x )。xxx(VAR x)(VAR …

5
为什么图灵功能语言完整?
也许我对这个主题的有限理解是错误的,但这是我到目前为止所了解的: 函数式编程基于Alonzo Church制定的Lambda微积分。 命令式编程基于教会学生Alan Turing制作的Turing机器模型。 Lambda演算的功能和图灵机一样强大, 这意味着它们的计算能力相当。 如果函数式编程基于Lambda演算而不是Turing机器,那么为什么其中某些(或全部)描述为Turing完整,而不是Lambda完整或类似的东西?“图灵完备性”一词在图灵机上是否有任何特殊之处,还是仅此一个词? 最后,如果命令式语言基于Turing Machine,而计算机基本上是Turing计算机,没有无限的内存,这是否意味着它们在我们现代PC上的性能优于功能编程语言? 如果是这样的话,那么lambda演算机器的等效条件是什么? 我知道这似乎是3个独立的问题,但它们都是紧密相关的,并且每个问题都取决于前一个问题是否是有效的问题。

5
函数编程之外的Lambda演算?
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 我是一名大学生,我们目前正在研究Lambda微积分。但是,我仍然很难理解为什么这对我有用。我意识到,如果您进行大量的函数编程,它可能会很有用,但是我认为学习函数式编程并不需要它,您认为呢? 其次,Lambda微积分在计算机科学领域内但在函数式编程语言之外是否有用?

2
什么是Beta对等?
此问题是从理论计算机科学堆栈交换迁移而来的,因为可以在计算机科学堆栈交换上回答。 迁移 7年前。 在我目前正在阅读的lambda演算的脚本中,β等价定义为: 该 -equivalence是一个包含最小的等价。≡ β →交通βββ\beta≡β≡β\equiv_\beta→β→β\rightarrow_\beta 我不知道那是什么意思。有人可以用更简单的方式解释它吗?也许举个例子? 我需要它来作为遵循Church-Russer定理的引理, 如果M N,则存在具有M A L L和N L.↠ β≡β≡β\equiv_\beta↠β↠β\twoheadrightarrow_\beta↠β↠β\twoheadrightarrow_\beta


2
组合器演算的基础集
众所周知,S和K组合器构成了组合器演算的基础集,从这个意义上说,所有其他组合器都可以用它们来表示。还有Curry的B,C,K,W基础,具有相同的属性。这样的基础一定是无限的,但我不知道其他任何一个。 我知道有很多单一组合器基础,例如Iota组合器和Fokker构建/审查的各种其他组合器。但是,这些是“不合适的”组合器,这意味着它们是用其他组合器而不是纯抽象来表示的。1 出于这个问题的目的,我只对由适当的组合器组成的基集感兴趣。 是否还存在对其他可能基础集的研究?理想的做法是按照Wolfram 对其他各种计算模型进行的研究,其中系统地研究了各种组合。我尤其对以下事情的简单示例感兴趣: 包含I组合器的最小基础集。(我用“最小”表示如果删除任何成员,它将不再是基础,因此SKI基础将不计。) 包含Y组合器或组合器(又名模仿鸟)的最小基础集ωω\omega 除S,K和B,C,K,W之外,有关组合逻辑其他可能基础的任何其他信息也将非常有帮助。 广而言之,我对作为纯机械系统的组合演算的研究感兴趣,即作为带有标记节点的二叉树上的一组转换规则的研究,不需要给出任何特定的语义解释。任何采用这种方法的资源指向都将不胜感激。(要嘲笑一只模仿鸟则采用了这种方法,但却给出了一个不完整的表述,而Barendregt的Lambda微积分与语义紧密相关,这使我很难提取我感兴趣的纯粹机械方面。) 1 确切地说:在lambda演算中,适当的组合器是形式的表达式,其中仅具有,等作为自由变量,并且不包含任何抽象。因此,例如是适当的组合器,但不是合适的组合器,因为它包含应用于lambda项的。P (X 1,X 2,... )X 1 X 2(λ X ý ž 。X (Ž Ž ))(λ X 。X (λ ÿ 。Ý ))X(λ 。X1个X2… P(x1个,X2,… ))(λ.x1x2…P(x1,x2,…))(\lambda.x_1x_2\dots P(x_1,x_2,\dots))P(x1个,X2,… )P(x1,x2,…)P(x_1,x_2,\dots)X1个x1x_1X2x2x_2( λ X ÿž。X (žž))(λxyz.x(zz))(\lambda x y z. x(z z))(λ X 。X ( λ ÿ。ÿ))(λx.x(λy.y))(\lambda …

4
为什么在lambda演算中使函数匿名很重要?
我正在看Jim Weirich的演讲,标题为“ 函数式编程历险记 ”。在本讲座中,他介绍了Y组合器的概念,该概念实质上是为高阶函数找到固定点的。 正如他提到的那样,动机之一是能够使用Lambda微积分来表达递归函数,从而保持Church的理论(可以使用Lambda微积分来计算任何可有效计算的理论)。 问题在于函数不能简单地这样调用自身,因为lambda演算不允许使用命名函数,即 n (x ,y)= x + yn(x,y)=x+yn(x, y) = x + y 不能使用名称“ ”,必须匿名定义:ñnn (x ,y)→ x + y(x,y)→x+y(x, y) \rightarrow x + y 为什么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.