Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换prolog中的列表_Prolog - Fatal编程技术网

替换prolog中的列表

替换prolog中的列表,prolog,Prolog,我想向列表中添加一个元素,并用我的列表替换它 所以我写了 initialstate(0,[],[[1,0],[2,3],[1,2],[1,3]]). add(X,L2,[X|L2]). 我想做这样的东西 ?- initialstate(_,List,_),add(4,List,List) 把我的初始状态换成这个 initial_state(0,[4],[[1,0],[2,3],[1,2],[1,3]]). 对我来说,主要的问题是如何替换索引器“initialstate”中的列表 我是新来的

我想向列表中添加一个元素,并用我的列表替换它

所以我写了

initialstate(0,[],[[1,0],[2,3],[1,2],[1,3]]).
add(X,L2,[X|L2]).
我想做这样的东西

?- initialstate(_,List,_),add(4,List,List)
把我的初始状态换成这个

initial_state(0,[4],[[1,0],[2,3],[1,2],[1,3]]).
对我来说,主要的问题是如何替换索引器“initialstate”中的列表


我是新来的prolog…请帮助我。。。如果这是一个愚蠢的事情,请道歉。

如果你想更改一个列表,你会得到一个不同的列表。所以你需要一个不同的名字

Prolog不是命令式语言,更像是描述性语言。这意味着:你不说做这个和这个。你说这是那样的,如果是这样的话,在文件(知识)中这是真/假。然后你启动口译员,查阅相关知识,问问题是否属实

写A=B意味着A总是B

?- initialstate(_,List,_),add(4,List,List)
表示列表的初始状态是当4添加到列表中时列表本身。 这不是
正确的
。如果添加了4,则之前没有4的地方应该有一个4

您可以这样做:

append4(List, ListWithFourInside) :- append(List, [4], ListWithFourInside).
这就像当我在列表中附加4时,我得到一个里面有4的列表

如果您希望在开始时使用4,则可以缩短时间

add4(List, ListWithFourInside) :- [4 | List] = ListWithFourInside.
甚至更短:

add4(List, [4|List]).

一旦提供了适当的声明

:- dynamic initialstate/3.
您可以用这种方式更新数据库

?- retract(initialstate(A,B,C)), assertz(initialstate(A,[4|B],C)).

以及如何将此ListWithFourInside置于初始状态(,X,)的X处。将当前列表替换为ListWithFourInside?在Prolog中不替换。告诉我一个纯英语的描述性句子,只使用动词
is
,我可以帮助你将你想看到的内容转换成prolog。当我在prolog上尝试这样做时,它抛出了一个错误:?-add4(List,[4 | List])。错误:未定义的过程:add4/2错误:但是,存在以下定义:ERROR:add/3 false。我不知道如何在我的初始状态下替换列表。如何创建相同的initialstate,但必须将NewListadd4和其他定义写入文件。然后将该文件(即添加的文件知识)咨询到prolog解释器<代码>?-意味着您现在可以向解释器询问一些事情,解释器会说是、否或不理解(错误)。在你的情况下,你没有参考源文件的定义。从乞讨我创建了这个文件。但我还没有写“添加”。所以我写了它。我在序言中查阅了它。它创建了一个包含元素4的新列表,但我不知道如何将其放入初始状态。这对我来说是最重要的。在我的第一个初始状态中包含新列表。对不起,如果我的问题很愚蠢,但我正在努力理解序言。