List 如何生成一个谓词来生成一个对列表?

List 如何生成一个谓词来生成一个对列表?,list,prolog,predicate,List,Prolog,Predicate,我想在Prolog中创建一个谓词pairlist(X,Y),当它被赋予一个列表时 X=[1,2,3,4,5,6],它将在列表中配对Y=[1,2],[3,4],[5,6]。你能帮帮我吗?基本上,我不明白如何将列表分成两组。。 谢谢这里有一个非常简单的解决方案: pairlist([],[]). pairlist([A],[[A]]). pairlist([A,B|T],[HL|TL]):- HL = [A,B], pairlist(T,TL). 请展示你的尝试,并提出更具体的问题

我想在Prolog中创建一个谓词
pairlist(X,Y)
,当它被赋予一个列表时 X=[1,2,3,4,5,6],它将在列表中配对
Y=[1,2],[3,4],[5,6]
。你能帮帮我吗?基本上,我不明白如何将列表分成两组。。
谢谢

这里有一个非常简单的解决方案:

pairlist([],[]).
pairlist([A],[[A]]).
pairlist([A,B|T],[HL|TL]):-
    HL = [A,B],
    pairlist(T,TL).

请展示你的尝试,并提出更具体的问题。有关提出好问题的信息,请参阅。您不需要
HL=[A,B]
。只需写,
pairlist([A,B | T],[A,B]| TL]):-pairlist(T,TL)。
此外,对于元素数为奇数的列表,OP没有指出它应该成功还是失败。因此不清楚是否需要
pairlist([A],[A])。
。这是另一个OP没有提供太多信息,希望有人为他们完成所有工作的案例。