Prolog中'is'的别名

时间:2016-06-01 07:49:20

标签: prolog swi-prolog

我希望能够为prolog中的is运算符创建一个符号别名,也可以与pack func一起使用。到目前为止,我有这个:

:- use_module(library(func)).
:- op(50, xfy, [$]).
:- op(700, xfx, [#]).
#(X, Y) :- is(Y, X).

我可以运行以下查询:

?- 2*10+5 # X.

但是不能运行像:

?- write(#$2*10+5).

这给了我一个语法错误。

如何让#$一起工作?

1 个答案:

答案 0 :(得分:3)

($)/2(#)/2都是二进制运算符:

:- op(50, xfy, [$]).
:- op(700, xfx, [#]).

因此,#$2*10+5 必须给出语法错误。 #($(2*10+5)) OTOH工作正常。