unification相关内容

在沃伦的抽象机器中,如果参数之一是寄存器,绑定如何工作?

我正在尝试创建自己的 WAM 实现,但我被困在 习题2.4 图2.4中的unify_value X4指令我看不懂. 据我了解,这条指令应该将程序中的 Y 与查询中的 f(W) 统一起来. unify_value X4 调用 unify (X4,S) 其中 S=2(见图 2.1),对应的堆单元为“REF 2",X4 为“力量 5 英寸. Unify(图 2.7)应该 bind ..
发布时间:2022-01-12 10:39:21 其他开发

为什么双重否定在 Prolog 中不绑定

假设我有以下理论: a(X) :- \+ b(X).b(X) :- \+ c(X).c(a). 它只是说真,这当然是正确的,a(X) 是真的,因为没有 b(X) (否定为有限失败).因为如果没有 c(X) 并且我们有 c(a) 则只有一个 b(X),因此可以说明这一点是真的.但是我想知道为什么 Prolog 不提供答案 X = a?比如说我介绍了一些语义: noOrphan(X) :- \+ ..
发布时间:2022-01-12 10:16:39 其他开发

Haskell 中的模式匹配等效变量,例如 Prolog

在 prolog 中,我们可以这样做: myFunction a (a:xs) = ... 也就是说,当 myFunction 的第一个参数与第二个参数中的列表的第一项相同时,此函数将评估为 .... 我现在的问题是......如何在 Haskell 中完成类似的事情?我认为 Prolog 的模式匹配比 Haskell 的更具表现力.我一直在尝试在 Haskell 中编写代码,但遇到了麻 ..
发布时间:2022-01-12 10:13:54 其他开发

Prolog中的==和=有什么区别?

有人能解释一下 Prolog 中 == 和 = 运算符之间的区别吗?我知道 X = Y 表示 X 与 Y 统一,如果 X 已经与 Y 统一或可以统一,则为 true,但我不明白这与 ==. 跟进:这(请参阅已接受的答案)是有道理的.还有一个问题,是否存在 X \= Y 为真而 X \== Y 为假(反之亦然)的情况?也就是X \= Y是否会测试它们是不能统一还是目前还没有统一? 解决方 ..
发布时间:2022-01-12 10:02:27 其他开发

如何手动推断表达式的类型

给定 Haskell 函数: head .过滤器 现在的问题是如何手动“手动"查找类型.如果我让 Haskell 告诉我我得到的类型: head .过滤器 fst :: [(Bool, b)] ->(布尔,b) 但我想仅使用定义如下的所用函数的签名来了解这是如何工作的: head :: [a] ->一种(.) :: (b -> c) ->(a -> b) ->->C过滤器 :: (a - ..
发布时间:2021-09-11 19:55:05 其他开发

为什么在 Prolog 中不绑定双重否定

假设我有以下理论: a(X) :- \+ b(X).b(X) :- \+ c(X).丙(一). 它只是说真的,这当然是正确的,a(X) 是真的,因为没有 b(X)(否定为有限失败).因为如果没有 c(X) 并且我们有 c(a),那么只有一个 b(X),可以这样说是真的.我想知道为什么 Prolog 不提供答案 X = a?比如说我介绍了一些语义: noOrphan(X) :- \+ orph ..
发布时间:2021-06-22 18:46:34 其他开发

Prolog中==和=的区别是什么?

谁能解释一下 Prolog 中 == 和 = 运算符之间的区别?我知道 X = Y 意味着 X 与 Y 统一,并且如果 X 已经与 Y 统一或可以实现,则为真,但我不明白这与 ==. 跟进:那(见接受的答案)是有道理的.还有一个问题,是否存在 X \= Y 为真而 X \== Y 为假(或反之亦然)的情况?也就是说,X \= Y 是否测试它们是不能统一还是当前没有统一? 解决方案 = ..
发布时间:2021-06-12 20:43:41 其他开发

检查变量列表是否无法与包含字母的列表一起使用

我有这个谓词 spaces_uni(Spc,LstWords),Spc是变量列表,例如 [X,Y,Z] 或 [a,Y,Z] 和LstWords是单词列表,例如 [[o,r,a,n,g,e],[a,p,p,l,e],[b,a,n,a,n,a]] . 此谓词的目的是检查LstWords中是否有任何单词可以与给定的Spc统一. 示例: ?-单词= [[a,m,e,n,o],[a,t,o], ..
发布时间:2021-05-30 19:18:00 其他开发

为什么要设置"map(过滤器fst)"?类型"[[[(Bool,a)]]->[[(Bool,a)]]"?

我正试图了解该功能的作用 map(过滤器fst) 具有类型 [[[(Bool,a)]]->[[(Bool,a)]] 如果过滤器必须接收一个返回Bool-Type的函数,而fst仅返回一个元组的第一个元素,那么“过滤器fst"如何工作? 过滤器::(a-> Bool)->[a]->[一种]fst ::(a,b)->一种 有人可以解释我吗?谢谢;) 解决方案 如果fi ..

与STO检测统一

在ISO Prolog中,统一仅针对那些属于NSTO的情况(不受发生检查)定义.背后的想法是涵盖那些通常在程序中使用并且所有Prolog系统实际上都支持的统一情况.更具体地说,ISO/IEC 13211-1:1995的内容如下: 7.3.3可以进行发生检查(STO),而不可以进行 进行发生检查(NSTO) 一组方程式(或两个术语)“可能发生- 检查"(STO),前提是存在一种进行操 ..
发布时间:2021-04-02 20:31:35 其他开发

Prolog如何回答该查询?

likes(alice, sports). likes(alice, music). likes(carol, music). likes(david,animals). likes(david,X) :- likes(X,sports). likes(alice,X) :- likes(david,X). ?- likes(alice,X). 几天来我一直在尝试学习序言,当我尝试这个问题时 ..
发布时间:2020-07-12 18:52:46 其他开发

序言和清单统一

我正在努力加深我对Prolog的理解,以及它如何处理统一性.在这种情况下,它如何处理与列表的统一. 这是我的知识库; member(X, [X|_]). member(X, [_|T]):- member(X, T). 如果我正确地理解了该过程.如果member(X, [X|_])不是true,则进入递归规则,如果X在列表T中,则[_|T]与T统一. 那么我的递归谓词中的匿名 ..
发布时间:2020-07-12 18:50:37 其他开发

类型为a->的函数b在Haskell?

Haskell中是否有类型为a -> b的函数?这就是说,有可能编写一个f :: a -> b这样的函数吗?我不认为存在这样的功能是由于以下原因:假设我们在f :: a -> b所在的位置找到f,f 2会产生什么? b类型的值,但是b是什么,因为Haskell无法从我给出的参数中推断(我认为)它?这样对吗?否则,您可以举一个这样的函数的例子吗? 解决方案 禁止⊥ (底值– undefine ..
发布时间:2020-07-12 18:49:29 其他开发