> I'm pretty new to Haskell, so forgive me if my question is due to my
> non-functional way of thinking...
> I have the following code:
> module Main where
> main = print solution
> solution = solve 1000000
> solve d = countUniqueFractions d 2 1 0
> canBeSimplified (a,b) = gcd a b > 1
> countUniqueFractions stopD currentD currentN count | currentD > stopD =
> | currentN == currentD =
> countUniqueFractions stopD (currentD + 1) 1 count
> | canBeSimplified
> (currentN, currentD) = countUniqueFractions stopD currentD (currentN+1)
> | otherwise =
> countUniqueFractions stopD currentD (currentN+1) (count + 1)
> When I run this code, I get a stack overflow. I don't understand why. Could
> anyone explain please?
Lazy accumulators. Did you try compiling with ghc -O2 ?
Haskell-Cafe mailing list