在Prolog中将列表分配给列表

在Prolog中将列表分配给列表,prolog,Prolog,所以,我想做的是: If(something) List=List2; 其中,List可以是任何列表(其中包含或不包含参数),而List2是包含列表的列表 但是在Prolog中,我不能使用is语句,我不能使用=。 我该怎么做 提前谢谢 我使用的是SWI Prolog。在Prolog中,变量只能赋值一次,如果两个参数都已初始化且不相等,=在Prolog中具有统一的语义,则不能执行List=List2。您需要更具体地说明您想要什么样的行为,是否要将值重新分配给变量列表?这在prolog中是不

所以,我想做的是:

If(something)
   List=List2;
其中,List可以是任何列表(其中包含或不包含参数),而List2是包含列表的列表

但是在
Prolog
中,我不能使用
is
语句,我不能使用
=
。 我该怎么做

提前谢谢


我使用的是SWI Prolog。

在Prolog中,变量只能赋值一次,如果两个参数都已初始化且不相等,=在Prolog中具有统一的语义,则不能执行List=List2。您需要更具体地说明您想要什么样的行为,是否要将值重新分配给变量列表?这在prolog中是不可能的,你必须创建一个新的变量,你不能完全按照你的要求去做。Prolog不像在其他语言中那样为变量“赋值”。您可以将未实例化的变量与实例化的变量统一起来,从而产生“赋值”的效果,如
List=List2
中所述,如果
List2
[a,b,c]
,并且
List
未绑定,那么
List
在统一后将绑定到
[a,b,c]
,很难猜出您的意思,也许你可以在顶层显示一个查询及其结果,否则很难猜出你想做什么,因为你没有显示你输入了什么和输出了什么。