问题标签 [lambda-calculus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
1241 浏览

scala - 将函数的第一个参数旋转为第 n 个

给定一个至少有n参数的函数,我想旋转第一个参数,使其成为第nth 个参数。例如(在无类型 lambda 演算中):

等等。

你能用r一般的方式写吗?如果你知道n >= 2怎么办?

这是Scala中陈述的问题:

例如,旋转应该采取Lam(a => Lam(b => Lam(c => Ap(Ap(a, b), c))))并返回Lam(b => Lam(c => Lam(a => Ap(Ap(a, b), c))))

0 投票
1 回答
905 浏览

scala - 一阶参数多态性和一阶函数

我在看论文Generics of a Higher Kind,第一句话是

在 Java 5 和 C# 2.0 中,一阶参数多态性以泛型的名义被引入到主流的面向对象编程语言中。

我不知道什么是一阶参数多态性,我也不太明白什么是一阶函数,我知道高阶函数是接受一个函数并返回一个函数的函数,但我不知道什么是零-阶函数,一阶函数。我从这里看到了一个解释,如下所示:

f -> g 是零阶
f -> g -> h 是一阶
f -> g -> h -> i 是二阶
等等。

谁能帮我解释一下这两个术语?

0 投票
2 回答
900 浏览

lambda-calculus - lambda演算中的迭代函数

我有这样的功能

我如何在无类型的 lambda 演算中定义这样的函数?

任何提示/帮助将不胜感激。

0 投票
2 回答
2233 浏览

functional-programming - 为了证明 SKK 和 II 是 beta 等价的,λ 演算

我是 lambda 演算的新手,正在努力证明以下内容。

SKK 和 II 是 beta 等效的。

在哪里

S = λ xyz.xz(yz) K = λ xy.x I = λ xx

我试图通过打开它来测试减少SKK,但无济于事,它变得一团糟。不要以为SKK可以在不扩大S、K的情况下进一步缩小。

0 投票
3 回答
5099 浏览

haskell - 在 HLint 的上下文中,eta reduce 是什么意思

我正在看教程http://haskell.org/haskellwiki/How_to_write_a_Haskell_program

在 HLint 下运行此程序时,会出现以下错误;

有人可以阐明“Eta Reduce”在这种情况下的确切含义吗?

0 投票
1 回答
5143 浏览

lambda - 是否有可能构建一个相对快速的无类型 lambda 演算机?

纯无类型 lambda 演算是一个强大的概念。然而,为实际使用构建机器或解释器通常被描述为(几乎)不可能。我想对此进行调查。理论上是否可以构建一个相对快速的无类型 lambda 演算机?

相对较快,我通常是指在相似数量的资源(门、操作、物理空间、功耗等)内,在相似的任务范围内,与现代类似图灵的架构相当。

我对机器的实现和架构层没有任何限制,除了它必须以某种方式在物理上和某种程度上可以现实地实现。对如何处理 IO 也没有限制。

  • 如果可能,主要挑战是什么?
  • 如果不可能,为什么以及如何?
  • 该领域的研究现状如何?
  • 哪些领域和科目最相关?

关于基于 lambda 演算的计算机体系结构的可行性,我们了解多少?

涵盖相似领域的问题:

0 投票
2 回答
4512 浏览

lambda-calculus - 在 lambda 演算中按值调用

我正在研究Types and Programming Languages,而 Pierce 对于按值减少策略的调用,给出了 term 的例子id (id (λz. id z))。内部 redexid (λz. id z)被归约为λz. id zfirst,id (λz. id z)作为第一次归约的结果,在外部 redex 归约为正常形式之前λz. id z

但是按值顺序调用被定义为“仅减少最外层的redex”,并且“仅当redex 的右侧已经减少为一个值时才减少redex”。在示例id (λz. id z)中出现在最外层 redex 的右侧,并且被缩减。这与仅减少最外层redexes的规则有何关系?

“最外层”和“最里面”的答案是否仅指 lambda 抽象?所以对于 in 中的一个术语tλz. t不能t减少,但是在 redexs t中,如果可能的话,t减少到一个值v,然后s v减少?

0 投票
3 回答
20047 浏览

ruby - 调用/应用 lambda 与函数调用 - Ruby 中的语法不同。为什么?

我对 Ruby 有点陌生,但仍在尝试理解一些语言设计原则。如果我做对了,Ruby 中的 lambda 表达式调用必须使用方括号,而“常规”函数调用必须使用“常规”/圆括号。

语法不同是否有特殊原因?或者,换句话说,(为什么)调用者应该知道他们是调用函数还是应用 lambda 表达式?

0 投票
2 回答
5938 浏览

haskell - 哈斯克尔的教堂数​​字

我正在尝试使用以下定义在 haskell 中打印教堂数字:

哈斯克尔代码:

当我在 haskell 控制台中输入它时,我收到一条错误消息

我无法准确弄清楚错误的含义。

谢谢!

0 投票
3 回答
3849 浏览

haskell - Haskell中教堂数字的减法

我正在尝试在 Haskell 中实现教堂数字,但我遇到了一个小问题。Haskell 抱怨无限类型

发生检查:无法构造无限类型:t = (t -> t1) -> (t1 -> t2) -> t2

当我尝试做减法时。我 99% 肯定我的 lambda 演算是有效的(如果不是,请告诉我)。我想知道的是,我是否可以做些什么来让 haskell 与我的函数一起工作。