我们可以将 X/Y 或 X:Y 放在 Prolog 中的哪个类别中



>如果我在Prolog中使用类似的东西

test(X/Y).

test(X:Y).

那么X:YX/Y被视为变量还是字符串?

我们可以把它放在什么类别中?

X/YX:Y都是复合词。尝试:

?- functor(X/Y, Functor, Arity).
Functor =  (/),
Arity = 2.
?- X/Y =.. [Functor| Arguments].
Functor =  (/),
Arguments = [X, Y].
?- functor(X:Y, Functor, Arity).
Functor =  (:),
Arity = 2.
?- X:Y =.. [Functor| Arguments].
Functor =  (:),
Arguments = [X, Y].

/:都是标准的中缀运算符:

?- current_op(Priority, Type, /).
Priority = 400,
Type = yfx.
?- current_op(Priority, Type, :).
Priority = 600,
Type = xfy.

类型yfx表示运算符是左关联运算符

?- write_canonical(x/y/z).
/(/(x,y),z)
true.

虽然类型xfy表示运算符是右关联运算符

?- write_canonical(x:y:z).
:(x,:(y,z))
true.

相关内容

  • 没有找到相关文章

最新更新