I understand the restrictions on ‘|’ as an operator, but what about ‘||’? Defining it with op/3 seems to be fine but when it’s used, the parser seems to get struck:
?- current_op(P,A,'||').
P = 500,
A = yfx.
?- X = a||b.
|
|
Action (h for help) ? | abort
% Execution Aborted