Haskell Space Overflow

Compilei este programa e estou tentando executá-lo.

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

Estou recebendo o seguinte do GHC

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

Presumo que essa seja uma das coisas que "estouro de espaço" que ouvi. (Sou bem novo em Haskell.) Como faço para corrigir isso? Preciso reescrever collatzLength para ser recursivo de cauda?

questionAnswers(4)

yourAnswerToTheQuestion