当使用用户定义的运算符时,Prolog 有时会自动添加/删除涉及这些运算符的表达式的括号。有没有办法控制这个?
非常感谢
括号只是通过描绘添加。它们不是代码内部表示的一部分。您可以覆盖描绘以更改事物的打印方式。见描绘文本
运算符定义如下:
:- op(Precedence, Associativity, Operator).
This answer to a similar question解释了这一点,但简短的回答是该Associativity
选项控制它;xfy
使运算符左结合yfx
并使运算符右结合。告诉 Prolog在Precedence
看到多个运算符时如何决定哪个运算符是子表达式。