[Haskell-beginners] Optimising a combinatorial algorithm?