Questions tagged «lambda-calculus»

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

7
Lambda演算似乎并不抽象。我看不出重点
潜在的问题: 是什么演算为我们做,我们不能与基本功能属性和符号在中学代数一般学吗? 首先,抽象在lambda演算的上下文中是什么意思?我对“抽象”一词的理解与某种概念的概念概括-机器不同。 但是,lambda函数通过消除函数名称来防止某种程度的抽象。例如: f(x) = x + 2 h(x, y) = x + 5 y 但是,即使不定义这些功能的机制,我们也可以轻松地讨论它们的组成。例如: 1. h(x, y) . f(x) . f(x) . h(x, y) or 2. h . f . f . h 我们可以根据需要包含参数,也可以完全抽象以概述发生的情况。而且我们可以快速将它们简化为一个功能。让我们看一下构成2。我可以根据自己的重点来写一些学生的细节层次: g = h . f . f . h g(x, y) = h(x, …

3
学习编程语言理论
最近,我对理解和证明(功能)编程语言的各个方面非常感兴趣。 但是,随着我的深入研究,如果没有适当的解释,演算,类别理论和指称语义之类的东西将有些难以理解。λλ\lambda 我读过SICP(相当有启发性的书),但我希望深入研究函数式编程理论。是否有书籍/博客/站点/您的名字可以从头开始讨论功能编程语言的理论?

2
在lambda演算中求解未知函数的函数方程
是否有任何技术可以解决lambda微积分中未知函数的函数方程? 假设我具有如下扩展定义的标识函数: Ix=xIx=xI x = x (即,为该函数的预期行为写下一个方程式),现在我想通过做一些代数变换来获得该函数的内涵式来为解决它:III I=λx.xI=λx.xI = \lambda x.x 告诉我们该函数如何精确地完成预期的工作(即,如何在lambda演算中实现它)。 当然,仅以身份功能为例。我对解决此类方程式的更通用方法感兴趣。特别是,我想找到一个满足以下要求的函数BBB: 乙F(λ X 。中号)= (λ X 。˚F中号)乙F(λX。中号)=(λX。F中号)B\;f\;(\lambda x.M) = (\lambda x.f M) 也就是说,将给定函数插入给定的lambda函数,使其位于其“ body”(它是任意的lambda表达式)之前,可能是通过拆开并构造一个新的函数,使其变为函数应用于的参数。FFf(λ X 。中号)(λX。中号)(\lambda x.M)中号中号MFFf

1
为什么Hindley-Milner算法永远不会产生类似t1-> t2的类型?
我在编写实现时正在阅读有关Hindley-Milner输入算法的信息,并且看到,只要绑定了每个变量,您总会得到原子类型或参数将确定最终类型的类型,例如t1 -> t1或。(t1 -> t2) -> (t1 -> t2)其中t1和t2是类型变量。 我想不出一种方法,您将获得类似于t1 -> t2或简单的东西t1,据我所知,这意味着算法已被破坏,因为无法确定表达式的实际类型。您怎么知道只要绑定了每个变量,您就永远不会得到像“破”这样的类型? 我知道算法会产生带有变量的类型,但是一旦将参数传递给函数,这些变量就总是可以解决的,而带type的函数不会出现这种情况t1 -> t2。这就是为什么我想知道我们如何确定算法永远不会产生此类类型的原因。 (看来您可以在ML中获得这些“残缺的”类型,但我要询问的是lambda演算。)



2
Lambda微积分中的“应用顺序”和“正常顺序”
应用顺序:在评估函数本身之前,请始终充分评估函数的参数,例如- (λ X 。X2(λ X 。(X + 1 )2 )))→ (λ X 。X 2(2 + 1 ))→ (λ X 。X 2(3 ))→ 3 2 → 9 (λx.x2(λx.(x+1) 2)))→(λx.x2(2+1))→ (λx.x2(3))→ 32 → 9(\lambda x. x^2(\lambda x.(x+1) \ \ 2))) \rightarrow (\lambda x. x^2(2+1))\rightarrow \ (\lambda x. x^2(3)) \rightarrow \ 3^2 \ …

3
微积分和编程语言之间有什么区别?
我对所谓的微积分和编程语言感到很困惑。 我倾向于认为并且可能已经被告知,微积分是用于推理程序等效性的正式系统。程序具有机器指定的操作语义,(我认为?)应该是确定性的。以此方式,针对语言的(正确)演算是用于程序等效的证明方法。大号LL 对我来说,这似乎是合理的划分,但这是否是普遍接受的含义?也许这是错误的? 相关的,为什么某些操作语义是不确定的(假设它们是融合的)?保持战略选择开放会带来什么好处? 我真的很感谢这些澄清。和具体参考!谢谢!

1
组合器演算表达式可以计算哪些函数?
可以将组合器表达式(假设以SK为基础)视为将组合器演算表达式映射到组合器演算表达式的函数。也就是说,可以将表达式视为函数,其中是在SK基础上所有语法有效的组合器表达式的集合。通过将输入应用于表达式,然后简化为正常形式以获取输出,可以执行此映射。XXXX:L→LX:L→LX:L \to LLLL 由于SK基础是Turing完整的,因此可能会天真的认为存在一个SK表达式,该表达式实现了从到任何可计算函数。但是,显然不是这种情况,因为减少的结果将始终为正常形式。这意味着表达式无法具有非正常形式的输出。XXXLLLLLL 因此,我可以将SK微积分表达式视为将映射到,其中是标准形式的SK表达式集。对于任何可计算的映射,是否存在一个实现此映射的SK表达式?还是对组合器演算表达式可以这种方式计算的函数集有进一步的限制?L′L′L'L′L′L'L′L′L'f:L′→L′f:L′→L′f:L'\to L'XXX

3
纯lambda演算中的奎因
我想举一个纯λ演算中的奎因的例子。我无法通过谷歌搜索找到一个,我感到非常惊讶。quine页面列出了许多“真实”语言的quines,但没有列出lambda演算。 当然,这意味着要在lambda演算中定义我的意思,这是我下面要做的。(我要的是非常具体的内容。) 在一些地方,例如Larkin和Stocks(2004),我看到以下内容被引用为“自我复制”表达式:。经过一个单独的beta降低步骤,它本身就减少了,从而给人一种类似于藜的感觉。但是,它像unquine一样,不会终止:进一步的β减少将继续产生相同的表达,因此它永远不会减少为正常形式。对我来说,quine是一个终止并输出自身的程序,所以我想要具有该属性的lambda表达式。(λx.xx)(λx.xx)(λx.xx)(λx.xx)(\lambda x.x \; x)\;(\lambda x.x \; x) 当然,任何不包含redexe的表达式都已经是正常形式,因此将终止并输出自身。但这太琐碎了。因此,我提出以下定义,希望它可以接受非平凡的解决方案: 定义(暂定):lambda演算中的喹是形式 x。A)的表达式 (其中表示某些特定的lambda演算表达式),使得变为或对变量更改后的等效值,当对任何输入简化为标准形式时。(λx.A)(λx.A)(\lambda x . A)AAA((λx.A)y)((λx.A)y)((\lambda x . A)\,\, y)(λx.A)(λx.A)(\lambda x . A)yyy 鉴于lambda演算与其他任何语言都具有图灵等效性,看来这应该是可行的,但是我的lambda演算是生锈的,因此我想不出一个例子。 参考 詹姆斯·拉金(James Larkin)和菲尔·斯托克斯(Phil Stocks)。(2004)“在Lambda微积分中的自我复制表达式”,信息技术研究与实践会议,26(1),167-173。 http://epublications.bond.edu.au/infotech_pubs/158


2
高阶函数是否为函数式编程提供了更多功能?
我在cstheory.SE上问过类似的问题。 根据关于Stackoverflow的答案,有一种算法在非惰性纯函数式编程语言上具有复杂度,而在命令式编程中,同一算法是。向FP语言添加惰性可以使算法。Ω (n )Ω (n )Ω (ñ 日志n )Ω(nlog⁡n)\Omega(n \log n)Ω (n )Ω(n)\Omega(n)Ω (n )Ω(n)\Omega(n) 比较带有和不带有高阶函数的FP语言是否存在等效关系?它仍然是图灵完整的吗?如果是这样,那么FP缺少高阶语言是否会使该语言的“功能”或效率降低?

2
Lambda演算:上下文与评估上下文之间的差异
首先,我想说的是,我的下面的文本可能包含错误,请随时指出我在提出问题时的任何错误。 考虑一个具有布尔值和if语句的无类型lambda演算,其条件由以下语法给出: t ::= v | t t | if t t t | x v ::= \x.t | #t | #f 在这种情况下,上下文C将根据以下语法给出: C ::= [-] | \x. C | C t | t C | if C t t | if t C t | if t t C …

4
有人可以给一个简单但非玩具的上下文相关语法示例吗?
我正在尝试理解上下文相关的语法。 我明白为什么语言喜欢 { w ^ w ^ | W ^ ∈ 一∗}{ww∣w∈A∗}\{ww \mid w \in A^*\} {anbncn∣n∈N}{anbncn∣n∈N}\{a^n b^n c^n \mid n\in\mathbb{N}\} 不是上下文无关的,但是我想知道一种类似于无类型lambda演算的语言是否上下文相关。 我想看一个简单但非玩具的示例(我考虑了上面的玩具示例),它是上下文相关语法的示例,对于某些生产规则,例如可以判断是否有一些符号字符串当前处于范围内(例如,在生成函数主体时)。 上下文敏感的语法是否足够强大,可以使未定义/未声明/未绑定的变量成为语法错误(而不是语义错误)?

1
构造演算中的是什么?
我正在查看构造演算及其在Lambda Cube中的位置。 如果我理解正确,则可以将多维数据集的每个轴都认为是向简单类型的演算添加了另一个涉及类型的操作。第一个轴添加类型到术语运算符,第二个类型到类型运算符和第三个从属类型或术语到类型运算符。CoC具有这三个要素。λ→λ→\lambda_\to 但是,CoC引入了一个术语,并根据推理规则指出,但未使用。我了解这是用于同义命题,但是逻辑命题并未以此为准。P - [R ø p :Ť ÿ p ëPropPropPropProp:TypeProp:TypeProp : Type 您能否向我解释的用途,出现的时间/地点,并根据立方体的轴进行解释(如果确实可以这样做的话)?PropPropProp

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.