List 动态谓词-访问其内容

List 动态谓词-访问其内容,list,dynamic,prolog,predicate,List,Dynamic,Prolog,Predicate,我有一个动态谓词 :- dynamic example/1. 比方说,我决定将其初始化为列表中的一对值 initialise_example(X,Y):- assert(example([(X,Y)])). 因此,在控制台中,我会键入: | ?- initialise_example(leftValue, rightValue). 这将向数据库保存一个事实: example([leftValue,rightValue]). yes 现在我的问题是,我如何提取,比如说,leftValue原

我有一个动态谓词

:- dynamic example/1.
比方说,我决定将其初始化为列表中的一对值

initialise_example(X,Y):- assert(example([(X,Y)])).
因此,在控制台中,我会键入:

| ?- initialise_example(leftValue, rightValue).
这将向数据库保存一个事实:

example([leftValue,rightValue]).
yes
现在我的问题是,我如何提取,比如说,leftValue原子,以便 用它来操纵?假设leftValue和rightValue是由多个原子组成的大型数据库的一部分

编辑:

假设我有一个事实如下:

example([(leftValue,rightValue),(leftValue2,rightValue2),(leftValue3,rightValue3), . . . , (leftValueN,rightValueN)]).
我将如何访问构成上述事实的列表的标题

example([H|T]).

将在另一个谓词中使用,但它将存储
example()
的全部数据,直到另一个谓词完成其处理。因此,不允许我在另一个谓词中使用
example()
的更新数据。

当您可以将某个内容保存为
example([left,right])
时,为什么要将其保存为
example(left,right)
?使用列表结构并将其保存为仅包含一个元素的列表的目的是什么?因此我有一个成对的列表
示例([(左,右),(上,下),…,(Xn,Yn)]
通常最好有单独的事实,
示例(x1,y1)。
示例(x2,y2).
等。但您的问题陈述非常笼统,根本没有说明有关多个值或您打算如何使用它们的任何内容。您所显示的内容或接近的内容:
示例([H | | |])
,这正是您从数据中获得列表标题的方式。您可能会问的其他问题有点不清楚。或许可以举个例子。。。