我目前正在深入研究Prolog,但是从JavaScript背景来看似乎很奇怪。例如,我有一个这样的定义:
np # Subject,
pp # IObject ; np # IObject,
但是,在执行结果时并不如预期。但是当使用parantheses时,它就是。
np # Subject,
(pp # IObject ; np # IObject),
这对我来说似乎很奇怪,因为,
是一个分隔符,所以没有必要进行parantheses。在Prolog中,parantheses究竟做了什么?请记住,我是Prolog的新手。
答案 0 :(得分:1)
,
的{{3}}低于;
。这在Prolog中意味着什么,就像
X ; Y , Z
被解释为
X ; (Y , Z)
要反过来对它们进行分组,必须使用括号:
(X ; Y) , Z