用于解压缩列表的序言谓词

Prolog predicate to unzip lists

我写了一个序言谓词 my_unzip/2 可以解压任何大小的列表。我似乎无法获得正确的输出,而且我是 prolog 的新手。

my_unzip([], [[],[]]). 
my_unzip([X], [[X], []]). 
my_unzip([F, S | T], [[F|TS], [S|TF]]) :- my_unzip(T, [TS, TF]). 

示例:

 my_unzip(X,[[a,b],[c,d]]).

应该return

X = [[a,c],[b,d]]

但我得到了

X = [a, c, b, d]
my_unzip([  F, S | T], [[F|TS], [S|TF]]) :- my_unzip(T, [TS, TF]). 

给你

X = [       a, c , .......

但你想要

X = [      [a, c], .......

因此,相应地,所需的更改是

my_unzip([ …F, S…| T], ......

(您需要进行相应的更改,将 替换为实际的句法元素)。