有没有办法对元组进行部分统一:
?- (_,c: X, _) = ( w: 23, c: 10, p: 45 ).
X = 10.
?- (c: X, _) = ( w: 23, c: 10, p: 45 ).
false.
?- (c: X) = ( w: 23, c: 10, p: 45 ).
false.
只有第一部作品。我想要第三个例子吗?
prepend-atom,如果键的顺序不正确,则也不起作用:
?- (_,w: X, p: Y, _) = (blah , w: 23, c: 10, p: 45 ).
false.
我还希望它在规则头中统一,例如。
rule((c: X)) :- X < 10.
rule((w: X, p: Y)) :- X < 10, Y > 0.
原因是我不知道元组的内容我只知道它具有“key” - “c”或“w” - 和 - “p”的元素,或者没有特定顺序的任何组合。< / p>
SWI-Prolog决定工作,但我不知道如何在规则中进行部分匹配() - 头部?!
?- _{c: X, a: Y} >:< _{ a: 5, b: 4, c:12, d:18}.
X = 12,
Y = 5.
但默认情况下,规则匹配是完全统一的,即:
?- _{c: X, a: Y} = _{ a: 5, b: 4, c:12, d:18}.
false.