我最近在学习有关Prolog,我发现用于定义中缀运算符混淆的三种类型。序言中缀运算符定义
指定操作符的类型时,xfx,xfy和yfx有什么区别? 我已经搜索了关于这个问题,并没有发现任何有用的东西。
我试着在序言中输入以下代码:
:- 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
结果表明没有对我来说差别。
谢谢你的回答! – JasonLi 2012-02-18 11:53:42
尝试对您的每个操作员进行操作(1 is_alive 2 is_alive 3),您将看到不同 – DaveEdelstein 2012-02-18 14:55:07