[Haskell-cafe] Flattening tail recursion?

Bayley, Alistair Alistair_Bayley at ldn.invesco.com
Fri Dec 10 10:29:00 EST 2004


http://haskell.org/hawiki/TailRecursive

A common technique to make a function tail-recursive is to introduce an
accumulating parameter, although in the 5 minutes I've spent looking on the
wiki, there's no specific page for this. Perhaps add a link from the
Efficiency section on  http://haskell.org/hawiki/CommonHaskellIdioms  ?


> -----Original Message-----
> From: GoldPython [mailto:goldpython at gmail.com] 
> Sent: 10 December 2004 15:07
> To: haskell-cafe at haskell.org
> Subject: [Haskell-cafe] Flattening tail recursion?
> 
> I'm missing something, a functional idiom, whatever. I know there's
> "length" to count the elements in a list and it works fine, but the
> function below stack overflows on a large list.
> 
>    countLines [] = 0
>    countLines (_:ls) = 1 + countLines ls
> 
> I would have thought that this was tail recursive and would be
> flattened into iteration by the compiler. Can anyone explain why? Is
> it because the call is embedded in an expression?
> 
> And additionally, how can I predict when the flattening will occur?
> 
> Thanks,
> Will
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 

-----------------------------------------
*****************************************************************
Confidentiality Note: The information contained in this   message, and any
attachments, may contain confidential   and/or privileged material. It is
intended solely for the   person(s) or entity to which it is addressed. Any
review,   retransmission, dissemination, or taking of any action in
reliance upon this information by persons or entities other   than the
intended recipient(s) is prohibited. If you received  this in error, please
contact the sender and delete the   material from any computer.
*****************************************************************



More information about the Haskell-Cafe mailing list