I've compiled this program and am trying to run it.
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]]
I'm getting the following from GHC
Stack space overflow: current size 8388608 bytes. Use `+RTS -Ksize -RTS' to increase it.
I assume this is one of the "space overflow" things I've been hearing about. (I'm pretty new to Haskell.) How do I fix it? Do I have to rewrite collatzLength to be tail recursive?