Split list into groups of n in Haskell
There are Data.List.Split.chunksOf and Data.List.Grouping.splitEvery implementations of this routine in specialized packages (and a number included in other application packages: search by Int -&gt; [a] -&gt; [[a]] signature on Hayoo). 

I think splitEvery implementation is pretty elegant:

splitEvery :: Int -&gt; [a] -&gt; [[a]]
splitEvery _ [] = []
splitEvery n xs = as : splitEvery n bs 
  where (as,bs) = splitAt n xs