From 8dc80b815fa72da5dad86777447c374ef1350c20 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Tue, 17 Dec 2024 22:51:47 +0100 Subject: [PATCH] use round brackets for goals involving operators Examples: ?- portray_clause(((+) :- a=b,(-))). (+) :- a=b, (-). true. ?- portray_clause((a :- (b :- c))). a :- (b:-c). true. This addresses #2715. Currently, more round brackets than needed are emitted. Ideally, a better approach to solve the issue here and also in toplevel.pl is found in the future. --- src/lib/format.pl | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lib/format.pl b/src/lib/format.pl index 5389c90dd..2ac4744b8 100644 --- a/src/lib/format.pl +++ b/src/lib/format.pl @@ -593,7 +593,15 @@ literal(Lit, VNs) --> { write_term_to_chars(Lit, [quoted(true),variable_names(VNs),double_quotes(true)], Ls) }, - seq(Ls). + ( { nonvar(Lit), + functor(Lit, F, A), + current_op(Pri, _, F), + ( A =:= 0 + ; Pri >= 1000 + ) } -> + "(", seq(Ls), ")" + ; seq(Ls) + ). literal_(Lit, VNs) --> { phrase(literal(Lit, VNs), Ls) },