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 | | |])
,这正是您从数据中获得列表标题的方式。您可能会问的其他问题有点不清楚。或许可以举个例子。。。