Prolog 浏览列表

Prolog 浏览列表,prolog,Prolog,慢慢地学习这个。。。今天买了几本书,它们简直糟透了 所以。。我试图在列表中移动X位置。。然后返回列表的其余部分。问题是我只返回该位置的元素,而不是列表。我相信我的问题不是基本情况就是未知变量。我也不是100%确定什么时候应该使用“ux” 一个解释会非常有帮助。。提前准备好 move([X|_],0,X). move([X|XS],K,L) :- K>0, K1 is K-1, move(XS,K1,L). 基本大小写应该是move(X,0,X) move([X | |,0,X)将

慢慢地学习这个。。。今天买了几本书,它们简直糟透了

所以。。我试图在列表中移动X位置。。然后返回列表的其余部分。问题是我只返回该位置的元素,而不是列表。我相信我的问题不是基本情况就是未知变量。我也不是100%确定什么时候应该使用“ux”

一个解释会非常有帮助。。提前准备好

move([X|_],0,X).
move([X|XS],K,L) :- K>0,
    K1 is K-1, move(XS,K1,L).

基本大小写应该是
move(X,0,X)


move([X | |,0,X)
将X与列表顶部的单个元素统一起来。

因此“|”表示尾部存在。。但是没有被使用?因此,使用术语X,它是整个列表,不分头尾?确切地说-
X
本身并不说明它将与什么匹配,因此将与整个列表统一。
[X | |]
模式将分解列表的结构,并导致X与头部统一。我发现“move”对于此操作来说是一个相当误导的名称。我称之为get_tail/3。@Kaarel:这个谓词的惯用名称是
nth_tail