问题标签 [combinators]

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 投票
3 回答
779 浏览

logic - 组合逻辑公理

我正在用组合逻辑进行一些定理证明实验,这看起来很有希望,但有一个绊脚石:有人指出,在组合逻辑中,例如 I = SKK 是真的,但这不是一个定理,它必须作为公理添加。有谁知道需要添加的公理的完整列表?

编辑:您当然可以手动证明 I = SKK,但除非我遗漏了什么,否则它不是具有相等性的组合逻辑系统中的定理。话虽如此,您可以将 I 宏扩展为 SKK ......但我仍然缺少一些重要的东西。取一组子句 p(X) 和 ~p(X),它们很容易解决普通一阶逻辑中的矛盾,并将它们转换为 SK,执行替换并评估 S 和 K 的所有调用,我的程序生成以下(我使用 ' 作为 Unlambda 的反引号):

''eq '''s ''s 'ks ''s 'ks '' kk 'k eq ''s 'ks 'kk 'kk ''s 'kk 'k 假'k 真的'k 真的

看起来我可能需要一套适当的规则来处理部分调用'k和'',我只是没有看到这些规则应该是什么,我在这个领域能找到的所有文献都是为目标受众是数学家而不是程序员。我怀疑一旦你理解了答案,答案可能很简单。

0 投票
1 回答
1336 浏览

parsing - 解析器组合器:如何终止关键字的重复

我试图弄清楚如何使用关键字终止单词的重复。一个例子:

当我执行

它打印words: List(one, two, END),表明words解析器已经使用了END我输入中的关键字,导致表达式解析器无法匹配。我END不想被 匹配words,这将允许expression成功解析。

0 投票
11 回答
89041 浏览

haskell - 文件夹如何工作?

任何人都可以解释它是如何foldr工作的吗?

举这些例子:

我对这些处决感到困惑。有什么建议么?

0 投票
4 回答
4232 浏览

haskell - Haskell 中的短路 (&&)

最近一直困扰着我的一个快速问题。Haskell 是否在一个返回布尔值的函数中执行所有等价测试,即使返回一个错误值?

例如

如果第一个测试返回 false,它会在 ? 之后执行第二个测试&&?或者 Haskell 是否足够懒惰以至于不这样做并继续前进?

0 投票
3 回答
479 浏览

haskell - 这两个组合器是否已经在 Haskell 中可用?

我需要这种类型的二进制组合器

或者可能

(虽然这只是第一个的 foldr1,我通常只需要组合两个布尔函数。)

这些是内置的吗?


如果没有,实现很简单:

也许

Hoogle 什么也没找到,但有时它的搜索并不能正确概括。知道这些是否是内置的吗?它们可以从现有库的片段中构建吗?

如果这些不是内置的,您可能会建议新名称,因为这些名称非常糟糕。事实上,这是我希望它们是内置的主要原因。

0 投票
2 回答
532 浏览

haskell - 如何在 Haskell 中编写 foldr HOF

我想在我的元组中添加一些金额。我想把它拿出来,汇总并展示。我想使用 Foldr 功能。

有人可以帮我看看怎么做

0 投票
2 回答
1056 浏览

haskell - 我在 Haskell 中对 Zip 的定义有什么问题?

我收到此错误消息:

0 投票
1 回答
1018 浏览

scala - Scala:我可以推动组合解析器在本地贪婪吗?

假设我有一种在组合解析器中表达的模棱两可的语言。有没有办法让某些表达式局部贪婪?这是我的意思的一个例子。

编译后,我可以如下运行它:

我想以某种方式指示第一部分obj在本地贪婪并与longchain. 如果我切换顺序,它与 匹配longchain,但这不是因为贪婪。

0 投票
2 回答
2701 浏览

lambda - 组合子在串联/默示编程语言中的作用

高阶组合器(或函数生成器)在串联隐性编程中究竟扮演什么角色?

是否有另一种方法来实现串联编程语言而不是直接操作堆栈?

所提到的组合子与Schonfinkel组合逻辑之间的关系有多紧密?

0 投票
4 回答
20946 浏览

haskell - foldl 与具有无限列表的 foldr 行为

此问题中 myAny 函数的代码使用 foldr。当谓词满足时,它会停止处理无限列表。

我用 foldl 重写了它:

(请注意,阶跃函数的参数已正确反转。)

但是,它不再停止处理无限列表。

我试图跟踪函数的执行,如Apocalisp 的回答

但是,这不是函数的行为方式。这是怎么回事?