2012-04-21 18 views
0

だから、リストのリストからn個のリストを取得しようとしています。私はhaskellに "take"や "drop"メソッドに似た働きをするメソッドがあるのだろうかと思っていましたが、代わりに私の状況ではうまくいくでしょう。たとえば:Haskell - リストのリストからn個のリストを取得する

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でこれを行うことは可能ですか?誰もがこの問題に取り組む方法について正しい方向に私を指すことができます。前もって感謝します。

答えて

7

takeおよびdropとまったく同じです。要素型がリスト型であっても、すべての要素型に対して同じ動作をします。

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]] 
+2

「splitAt」について忘れないでください! –

関連する問題