Prolog 中的执行顺序: ;操作员
Execution order in Prolog: ; operator
我目前正在研究 Prolog,但来自 JavaScript 的背景似乎很奇怪。例如,我有这样的定义:
np # Subject,
pp # IObject ; np # IObject,
然而,在执行过程中,结果并不如预期。但是当使用括号时它是。
np # Subject,
(pp # IObject ; np # IObject),
这对我来说似乎很奇怪,因为 ,
是一个分隔符,因此不需要括号。 Prolog 中的括号到底是做什么的。请记住,我是 Prolog 的新手。
,
的 precedence value 低于 ;
。这在 Prolog 中意味着,像
这样的表达式
X ; Y , Z
被解释为
X ; (Y , Z)
要将它们反过来分组,您必须使用括号:
(X ; Y) , Z
我目前正在研究 Prolog,但来自 JavaScript 的背景似乎很奇怪。例如,我有这样的定义:
np # Subject,
pp # IObject ; np # IObject,
然而,在执行过程中,结果并不如预期。但是当使用括号时它是。
np # Subject,
(pp # IObject ; np # IObject),
这对我来说似乎很奇怪,因为 ,
是一个分隔符,因此不需要括号。 Prolog 中的括号到底是做什么的。请记住,我是 Prolog 的新手。
,
的 precedence value 低于 ;
。这在 Prolog 中意味着,像
X ; Y , Z
被解释为
X ; (Y , Z)
要将它们反过来分组,您必须使用括号:
(X ; Y) , Z