问题标签 [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参数的函数,我想旋转第一个参数,使其成为第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))))。
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 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减少?
ruby - 调用/应用 lambda 与函数调用 - Ruby 中的语法不同。为什么?
我对 Ruby 有点陌生,但仍在尝试理解一些语言设计原则。如果我做对了,Ruby 中的 lambda 表达式调用必须使用方括号,而“常规”函数调用必须使用“常规”/圆括号。
语法不同是否有特殊原因?或者,换句话说,(为什么)调用者应该知道他们是调用函数还是应用 lambda 表达式?
haskell - 哈斯克尔的教堂数字
我正在尝试使用以下定义在 haskell 中打印教堂数字:
哈斯克尔代码:
当我在 haskell 控制台中输入它时,我收到一条错误消息
我无法准确弄清楚错误的含义。
谢谢!
haskell - Haskell中教堂数字的减法
我正在尝试在 Haskell 中实现教堂数字,但我遇到了一个小问题。Haskell 抱怨无限类型
发生检查:无法构造无限类型:t = (t -> t1) -> (t1 -> t2) -> t2
当我尝试做减法时。我 99% 肯定我的 lambda 演算是有效的(如果不是,请告诉我)。我想知道的是,我是否可以做些什么来让 haskell 与我的函数一起工作。