constrain bracketing to operators with pertaining arity

Example:

    ?- X = -->(a,b,c).
       X = -->(a,b,c).
This commit is contained in:
Markus Triska
2023-06-30 18:01:17 +02:00
parent 4953cfd10e
commit 28065b0565

View File

@@ -208,8 +208,9 @@ needs_bracketing(Value, Op) :-
nonvar(Value),
\+ integer(Value),
functor(Value, F, Arity),
current_op(FPrec, _, F),
current_op(FPrec, FSpec, F),
current_op(EqPrec, EqSpec, Op),
arity_specifier(Arity, FSpec),
( Arity =:= 0 ->
true
; EqPrec < FPrec ->
@@ -222,6 +223,10 @@ needs_bracketing(Value, Op) :-
memberchk(EqSpec, [fx,xfx,yfx])
).
arity_specifier(0, _).
arity_specifier(1, S) :- atom_chars(S, [_,_]).
arity_specifier(2, S) :- atom_chars(S, [_,_,_]).
write_goal(G, VarList, MaxDepth) :-
( G = (Var = Value) ->
( var(Value) ->