【发布时间】:2009-04-20 10:58:27
【问题描述】:
我在我的 prolog 解释器中加载了接下来的两个事实:
foo(U+V,1).
foo(U*V,2).
现在我尝试使用该结果进行下一个查询:
foo(x*x+x,R). --> R = 1
foo(x+x*x,R). --> R = 1
foo(x*x*x,R). --> R = 2
现在我尝试下一个查询:
foo(x*x-x,R). --> no
据我了解,这可以通过运算符优先级如何构建树表达式来解释:
x+x*x --> + so it matches with --> +
/ \ / \
x * U V
/ \
x x
x-x*x --> - DOES NOT matches any fact.
/ \
x *
/ \
x x
这个解释正确吗?
【问题讨论】:
标签: prolog operator-precedence