获取操作员操作数

时间:2015-06-18 11:26:01

标签: list prolog operators

我有清单:

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

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

1 个答案:

答案 0 :(得分: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之类的内容实际上是带有仿函数 =和arity 2的 term ,第一个参数为a和第二个参数3。如果你遇到一种情况,你不确定Prolog如何解释你写的东西,你可以尝试write_canonical/1

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

换句话说,是的,=被声明为运算符,但它也是一个原子,因此它可以是一个术语的名称。