问题标签 [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.
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和'',我只是没有看到这些规则应该是什么,我在这个领域能找到的所有文献都是为目标受众是数学家而不是程序员。我怀疑一旦你理解了答案,答案可能很简单。
parsing - 解析器组合器:如何终止关键字的重复
我试图弄清楚如何使用关键字终止单词的重复。一个例子:
当我执行
它打印words: List(one, two, END)
,表明words
解析器已经使用了END
我输入中的关键字,导致表达式解析器无法匹配。我END
不想被 匹配words
,这将允许expression
成功解析。
haskell - Haskell 中的短路 (&&)
最近一直困扰着我的一个快速问题。Haskell 是否在一个返回布尔值的函数中执行所有等价测试,即使返回一个错误值?
例如
如果第一个测试返回 false,它会在 ? 之后执行第二个测试&&
?或者 Haskell 是否足够懒惰以至于不这样做并继续前进?
haskell - 这两个组合器是否已经在 Haskell 中可用?
我需要这种类型的二进制组合器
或者可能
(虽然这只是第一个的 foldr1,我通常只需要组合两个布尔函数。)
这些是内置的吗?
如果没有,实现很简单:
也许
Hoogle 什么也没找到,但有时它的搜索并不能正确概括。知道这些是否是内置的吗?它们可以从现有库的片段中构建吗?
如果这些不是内置的,您可能会建议新名称,因为这些名称非常糟糕。事实上,这是我希望它们是内置的主要原因。
haskell - 如何在 Haskell 中编写 foldr HOF
我想在我的元组中添加一些金额。我想把它拿出来,汇总并展示。我想使用 Foldr 功能。
有人可以帮我看看怎么做
haskell - 我在 Haskell 中对 Zip 的定义有什么问题?
我收到此错误消息:
scala - Scala:我可以推动组合解析器在本地贪婪吗?
假设我有一种在组合解析器中表达的模棱两可的语言。有没有办法让某些表达式局部贪婪?这是我的意思的一个例子。
编译后,我可以如下运行它:
我想以某种方式指示第一部分obj
在本地贪婪并与longchain
. 如果我切换顺序,它与 匹配longchain
,但这不是因为贪婪。
haskell - foldl 与具有无限列表的 foldr 行为
此问题中 myAny 函数的代码使用 foldr。当谓词满足时,它会停止处理无限列表。
我用 foldl 重写了它:
(请注意,阶跃函数的参数已正确反转。)
但是,它不再停止处理无限列表。
我试图跟踪函数的执行,如Apocalisp 的回答:
但是,这不是函数的行为方式。这是怎么回事?