[Hugs-users] stack overflow in tail recursive function

Neil Mitchell ndmitchell at gmail.com
Tue Mar 23 16:40:39 EDT 2010


Hi Bruno,

I suggest you ask this question on the haskell-cafe@ mailing list -
it's a general Haskell question, and you'll get a much more detailed
answer there.

Thanks, Neil

On Tue, Mar 23, 2010 at 12:01 PM, Bruno Schneider <boschneider at gmail.com> wrote:
> Hi all,
>
> I have this tail recursive factorial function:
>
> factorial :: Integer -> Integer
> factorial 0 = 1
> factorial n = fat' n 1 where
>    fat' 1 fat = fat
>    fat' n fat = fat' (n-1) (n*fat)
>
> Whenever I run it with a number of 20000 or more I get a stack
> overflow error. It doesn't seem a problem with the large resulting
> number because, if so, the message should be something like "Garbage
> collection fails to reclaim sufficient space". Other functions seem to
> able to handle a larger number of recursive calls.
>
> So, what is the problem with this particular function?
>
> --
> Bruno Schneider
> http://www.dcc.ufla.br/~bruno/
> _______________________________________________
> Hugs-Users mailing list
> Hugs-Users at haskell.org
> http://www.haskell.org/mailman/listinfo/hugs-users
>


More information about the Hugs-Users mailing list