使用用户定义的运算符时,Prolog有时会自动将括号添加/删除到涉及这些运算符的表达式。有没有办法控制这个?
非常感谢
答案 0 :(得分:3)
只是通过描绘添加了parens。他们不是内部代表的一部分 的代码。您可以覆盖描绘以更改打印方式。请参阅portray_text
答案 1 :(得分:1)
运算符的定义如下:
:- op(Precedence, Associativity, Operator).
This answer对类似的问题解释了这一点,但简短的回答是Associativity
选项控制了这一点; xfy
使运算符左关联,yfx
使运算符成为关联关系。 Precedence
告诉Prolog在看到多个运算符时,如何确定哪个运算符是子表达式。