获取运算符操作数

Get operator operands

我有清单:

List = [a=3, b=2, c=0].

例如,第一个元素a=3,我如何得到值Left = a,Right = 3。 左边是原子,右边是数字。

使用统一:

?- List = [a=3, b=2, c=0], member(Left=Right, List).
List = [a=3, b=2, c=0],
Left = a,
Right = 3 ;
List = [a=3, b=2, c=0],
Left = b,
Right = 2 ;
List = [a=3, b=2, c=0],
Left = c,
Right = 0.

在这里,像 a=3 这样的东西实际上是一个 term 和一个 functor = 和 arity 2,第一个参数 a 和第二个参数 3。如果您遇到不确定 Prolog 如何准确解释您编写的内容的情况,您可以尝试 write_canonical/1:

?- write_canonical(a=3).
=(a,3)
true.

也就是说,是的,=被声明为一个运算符,但它也是一个原子,所以它可以是一个术语的名称。