Prolog中的执行顺序:;操作者

时间:2015-05-10 09:30:48

标签: prolog operators

我目前正在深入研究Prolog,但是从JavaScript背景来看似乎很奇怪。例如,我有一个这样的定义:

np # Subject,
pp # IObject ; np # IObject,

但是,在执行结果时并不如预期。但是当使用parantheses时,它就是。

np # Subject,
(pp # IObject ; np # IObject),

这对我来说似乎很奇怪,因为,是一个分隔符,所以没有必要进行parantheses。在Prolog中,parantheses究竟做了什么?请记住,我是Prolog的新手。

1 个答案:

答案 0 :(得分:1)

,的{​​{3}}低于;。这在Prolog中意味着什么,就像

这样的表达
X ; Y , Z

被解释为

X ; (Y , Z)

要反过来对它们进行分组,必须使用括号:

(X ; Y) , Z