Two X variables!
Looks like a bug. As usual, there is no cure without a complete example.
1 Like
:- op(920, xfx, ->>). % if-then statment
:- meta_predicate ->>(:, :).
X ->> Y :- X -> Y ; true.
cp: [trace] [1] ?- 1=1 ->> 1=2.
Thanks. Pushed b1fc234e35defbffc03c9869031cf7e56e2b61ca to fix this.
P.s. use ->>(0,0)
to tell the cross-referencer ->>
is calling its argument and make goal expansion on the arguments work. You probably also want a goal_expansion/2
rule for this as a predicate turns all this into meta-calling which performs significantly worse than direct calling. Once upon a time the compiler should automatically inline stuff like this.