constrain bracketing to operators with pertaining arity
Example:
?- X = -->(a,b,c).
X = -->(a,b,c).
This commit is contained in:
@@ -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) ->
|
||||
|
||||
Reference in New Issue
Block a user