我有清单:
List = [a=3, b=2, c=0].
例如,第一个元素a=3
,我如何获得值Left = a
,Right = 3
。
左边是原子,右边是数字。
答案 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.
换句话说,是的,=
被声明为运算符,但它也是一个原子,因此它可以是一个术语的名称。