Haskell - 从列表列表中获取n个列表

时间:2012-04-21 23:33:35

标签: list haskell functional-programming

嘿伙计们,所以我正在尝试从列表列表中获取n个列表。我想知道haskell中是否有一个方法与“take”和“drop”方法类似,但是如果能在我的情况下工作。例如:

Input = [ [1,2,3,4], [5,6,7,8], [9,1,2,3], [4,5,6,7], [8,9,1,2], [3,4,5,6] ]

我希望能够从这个列表列表中获取前3个元素,最终得到类似的结果:

Output = [ [1,2,3,4], [5,6,7,8], [9,1,2,3]]

我还希望能够从这个列表列表中删除前3个元素,最终得到这样的结果:

Output = [[4,5,6,7], [8,9,1,2], [3,4,5,6]]

是否有可能在haskell中做这样的事情。?任何人都可以指出我如何解决这个问题的正确方向。提前谢谢。

1 个答案:

答案 0 :(得分:7)

takedrop正是这样做的。它们对所有元素类型的工作方式相同,即使元素类型是列表类型。

Prelude> take 3 [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]
[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
Prelude> drop 3 [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],[17,18,19,20]]
[[13,14,15,16],[17,18,19,20]]