Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想在 SWI-Prolog 中重新定义 AND 运算符。但我不知道该怎么做。我尝试了以下定义:
a & b = b & a
但是,它被报告为递归并且不起作用。希望人们给我建议。提前致谢!
您可以使用 定义 SWI-Prolog 中的运算符op/3,例如通过将以下内容添加到您的程序中:
op/3
:- op(1000, xfy, user:(&)).
请注意,优先级 ( 1000) 和类型 ( xfy) 与已在 SWI-Prolog 中定义的合取运算符相同(即,请参阅','/2)。
1000
xfy
','/2
然后,一旦声明,您可以定义&如下语义:
&
'&'(A,B) :- A, B.
这两个定义一起将允许您在包含它们的程序中使用&in-line 来代替表示连接的意思。,
,
您可以“定义”and如下:
and
and(t,X,X) :- bool(X). and(f,X,f) :- bool(X). bool(t). bool(f).
第三个参数是第一个和第二个参数合取的结果。
当然,这只是一个练习,但确实很难回答您的问题,因为您的问题的全部内容并不是很清楚。