Prolog:tuple | dict统一:部分匹配?

时间:2018-02-02 19:07:08

标签: prolog tuples partial unification

有没有办法对元组进行部分统一:

?- (_,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.

0 个答案:

没有答案