Haskell Space Overflow

He compilado este programa y estoy intentando ejecutarlo.

import Data.List
import Data.Ord
import qualified Data.MemoCombinators as Memo

collatzLength :: Int -> Int
collatzLength = Memo.arrayRange (1, 1000000) collatzLength'
  where
    collatzLength' 1 = 1
    collatzLength' n | odd n  = 1 + collatzLength (3 * n + 1)
                     | even n = 1 + collatzLength (n `quot` 2)

main = print $ maximumBy (comparing fst) $ [(collatzLength n, n) | n <- [1..1000000]]

Recibo lo siguiente de GHC

Stack space overflow: current size 8388608 bytes.
Use `+RTS -Ksize -RTS' to increase it.

Supongo que esta es una de las cosas de "desbordamiento de espacio" que he estado escuchando. (Soy bastante nuevo en Haskell). ¿Cómo lo soluciono? ¿Tengo que reescribir collatzLength para que sea recursiv

Respuestas a la pregunta(4)

Su respuesta a la pregunta