需要 MonadPlus (ST a) 实例
我正在阅读论文 Haskell 中的类型化逻辑变量,但我无法理解最终实现的细节。特别是第 4 节中介绍的回溯状态转换器。出于某种我不知道的原因,GHC 认为…
“:=”和“==”在水星
我最近在 Mercury 中看到了这个代码示例: append(X,Y,Z) :- X == [], Z := Y. append(X,Y,Z) :- X => [H | T], append(T,Y,NT), Z <= [H | NT]. 作为…
给定替换 S 和列表 X,如何将 S 应用于 X
假设我有一个替换 S 和列表 Xs,其中 Xs 中出现的每个变量也出现在 S 中。我如何找到列表S(Xs),即通过将替换S应用于列表Xs而获得的列表。 更具体地说…
存在算术运算符时 prolog 中的统一行为
12 ?- 3+4*5 = X+Y. X = 3, Y = 4*5. 13 ?- 3+4*5 = X*Y. false. 16 ?- 3*4+5 = X*Y. false. 我在期待 13 ?- 3+4*5 = X*Y. X = 3+4, Y = 5. 16 ?- 3*4…
Haskell 中实例化类型变量
编辑:已解决。我不知道在源文件中启用语言扩展并没有在 GHCi 中启用语言扩展。解决方案是在 GHCi 中 :setFlexibleContexts 。 我最近发现 Haskell 中…
模式匹配和统一之间的区别?
我以为我理解 Scala 和 Haskell 中的模式匹配与 Prolog 中的统一有何不同,但我对 Prolog 的误解很大。有哪些简单的问题,一个人可以解决,另一个人却…
为什么 SWI-Prolog 将带引号和不带引号的字符串(不含空格)统一为同一规则?
假设我有以下规则: unify('test', 'this is a test'). run :- write('Enter something: '), read(X), unify(X, Y), write('The answer is '), write(…
Haskell 中的模式匹配等效变量,就像 Prolog 中一样
在 prolog 中,我们可以执行如下操作: myFunction a (a:xs) = ... 即,当 myFunction 的第一个参数与第二个参数中的列表的第一项相同时,该函数将计…
为什么这个 Prolog 谓词不统一?
我正在编写一个谓词来查找 A* 迭代的所有可能的后继状态,并将它们放入类似 [(cost, state), ...] 的列表中,目前处于此状态: addSuccessors(L, [], …
将 X,Y 与 (1,2), (1,-2), (-1,2), (-1,-2), (2,1), (2) 统一的优雅方法是什么,-1) , (-2,1), (-2,-1)?
将 X,Y 与 (1,2), (1,-2), (-1,2), (-1,-2), (2,1), (2,-1) 统一的优雅方法是什么, (-2,1), (-2,-1)? 这样做似乎容易出错且乏味: foo(1,2). foo(1,-2…