问题标签 [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.
scala - 将函数的第一个参数旋转为第 n 个
给定一个至少有n
参数的函数,我想旋转第一个参数,使其成为第n
th 个参数。例如(在无类型 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))))
。
scala - 一阶参数多态性和一阶函数
我在看论文Generics of a Higher Kind
,第一句话是
在 Java 5 和 C# 2.0 中,一阶参数多态性以泛型的名义被引入到主流的面向对象编程语言中。
我不知道什么是一阶参数多态性,我也不太明白什么是一阶函数,我知道高阶函数是接受一个函数并返回一个函数的函数,但我不知道什么是零-阶函数,一阶函数。我从这里看到了一个解释,如下所示:
f -> g 是零阶
f -> g -> h 是一阶
f -> g -> h -> i 是二阶
等等。
谁能帮我解释一下这两个术语?
lambda-calculus - lambda演算中的迭代函数
我有这样的功能
我如何在无类型的 lambda 演算中定义这样的函数?
任何提示/帮助将不胜感激。
functional-programming - 为了证明 SKK 和 II 是 beta 等价的,λ 演算
我是 lambda 演算的新手,正在努力证明以下内容。
SKK 和 II 是 beta 等效的。
在哪里
S = λ xyz.xz(yz) K = λ xy.x I = λ xx
我试图通过打开它来测试减少SKK,但无济于事,它变得一团糟。不要以为SKK可以在不扩大S、K的情况下进一步缩小。
haskell - 在 HLint 的上下文中,eta reduce 是什么意思
我正在看教程http://haskell.org/haskellwiki/How_to_write_a_Haskell_program
在 HLint 下运行此程序时,会出现以下错误;
有人可以阐明“Eta Reduce”在这种情况下的确切含义吗?
lambda - 是否有可能构建一个相对快速的无类型 lambda 演算机?
纯无类型 lambda 演算是一个强大的概念。然而,为实际使用构建机器或解释器通常被描述为(几乎)不可能。我想对此进行调查。理论上是否可以构建一个相对快速的无类型 lambda 演算机?
相对较快,我通常是指在相似数量的资源(门、操作、物理空间、功耗等)内,在相似的任务范围内,与现代类似图灵的架构相当。
我对机器的实现和架构层没有任何限制,除了它必须以某种方式在物理上和某种程度上可以现实地实现。对如何处理 IO 也没有限制。
- 如果可能,主要挑战是什么?
- 如果不可能,为什么以及如何?
- 该领域的研究现状如何?
- 哪些领域和科目最相关?
关于基于 lambda 演算的计算机体系结构的可行性,我们了解多少?
涵盖相似领域的问题:
lambda-calculus - 在 lambda 演算中按值调用
我正在研究Types and Programming Languages,而 Pierce 对于按值减少策略的调用,给出了 term 的例子id (id (λz. id z))
。内部 redexid (λz. id z)
被归约为λz. id z
first,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
减少?
ruby - 调用/应用 lambda 与函数调用 - Ruby 中的语法不同。为什么?
我对 Ruby 有点陌生,但仍在尝试理解一些语言设计原则。如果我做对了,Ruby 中的 lambda 表达式调用必须使用方括号,而“常规”函数调用必须使用“常规”/圆括号。
语法不同是否有特殊原因?或者,换句话说,(为什么)调用者应该知道他们是调用函数还是应用 lambda 表达式?
haskell - 哈斯克尔的教堂数字
我正在尝试使用以下定义在 haskell 中打印教堂数字:
哈斯克尔代码:
当我在 haskell 控制台中输入它时,我收到一条错误消息
我无法准确弄清楚错误的含义。
谢谢!
haskell - Haskell中教堂数字的减法
我正在尝试在 Haskell 中实现教堂数字,但我遇到了一个小问题。Haskell 抱怨无限类型
发生检查:无法构造无限类型:t = (t -> t1) -> (t1 -> t2) -> t2
当我尝试做减法时。我 99% 肯定我的 lambda 演算是有效的(如果不是,请告诉我)。我想知道的是,我是否可以做些什么来让 haskell 与我的函数一起工作。