获取运算符操作数
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.
也就是说,是的,=
被声明为一个运算符,但它也是一个原子,所以它可以是一个术语的名称。
我有清单:
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.
也就是说,是的,=
被声明为一个运算符,但它也是一个原子,所以它可以是一个术语的名称。