リストを指定した個数ずつに分割する
どっかで見たような気もするんですが、思い出せなかったので実装してみました。うーむ、高階関数を上手く使えそうな気もするんですが、いいのが思い付かなかったので普通に再帰で実装してみました。
module Main (main) where groupn :: Int -> [a] -> [[a]] groupn _ [] = [] groupn n xs = let (xs1, xs2) = splitAt n xs in xs1 : groupn n xs2 main :: IO () main = print $ groupn 4 [1 .. 10] -- => [[1,2,3,4],[5,6,7,8],[9,10]]