我最近在学习 Prolog,发现用于定义中缀运算符的三种类型令人困惑。
指定运算符类型时,xfx、xfy 和 yfx 有什么区别?我用谷歌搜索了这个问题,没有发现任何有用的东西。
我尝试在 Prolog 中输入以下代码:
:- op(500,yfx,is_alive).
is_alive(A,B) :- display([A,B]).
:- op(500,xfy,is_alive2).
is_alive2(A,B) :- display([A,B]).
:- op(500,xfx,is_alive3).
is_alive3(A,B) :- display([A,B]).
和输出:
| ?- 1 is_alive 2.
'.'(1,'.'(2,[]))
yes
| ?- 1 is_alive2 2.
'.'(1,'.'(2,[]))
yes
| ?- 1 is_alive3 2.
'.'(1,'.'(2,[]))
yes
结果对我来说没有什么不同。