RE: [Haskell-cafe] Flattening tail recursion?

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@gmail.com] Sent: 10 December 2004 15:07 To: haskell-cafe@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@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. *****************************************************************
participants (1)
-
Bayley, Alistair