2011-05-12 61 views
0

我使用SWI-Prolog,我想列出其他几个列表。如何在序言中创建列表

例如,我想提出以下三个列表

[a,b,c] 
[1,2] 
[d] 

成一个较大的一个,看起来像[[a,b,c],[1,2],[d]]

divideList([]):-!. 

divideList([Head|Tail]):- 
    list_to_set(Head,H),%H is a List 
    divideList(Tail). 

我想把所有的H放在一个列表中。 我该怎么做?

+1

问题不明确。你有没有固定数量的列表,你想把它放在一个列表中? – gusbro 2011-05-12 19:03:13

+0

是的,我有三个列表,但可以更改。我想把它们放在更大的一个。 – Mary 2011-05-12 20:05:17

+0

假设三个列表与变量A,B,C统一,那么您只需编写[A,B,C] – gusbro 2011-05-12 20:11:32

回答

0

的问题是,你不使用你的谓词H至放列表中选择所需

这应该这样做

divideList([], []):-!. 
divideList([Head|Tail], [H|HTail]):- 
    list_to_set(Head,H),%H is a List 
    divideList(Tail, HTail). 

第二个参数将有你的名单列表。

+0

根本不需要切割。 – 2011-05-13 08:30:54

+0

@larsman:对,但我刚刚添加了OP代码中缺少的内容,所以我将其保留原样。 – gusbro 2011-05-13 13:22:59