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.
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) },