[Haskell-cafe] Memory leak in infinite recursion
Mark Wotton
mwotton at gmail.com
Wed Jun 20 00:08:57 UTC 2018
Oops, yes, you are right - if it keeps switching back and forth the stack
will build up. Apologies, written while wrangling a toddler.
On Tue, Jun 19, 2018, 8:06 PM David Feuer <david.feuer at gmail.com> wrote:
> Actually, only the second set is tail recursive. The first set could be
> trouble.
>
>
> On Tue, Jun 19, 2018, 8:03 PM Mark Wotton <mwotton at gmail.com> wrote:
>
>> Any mutually recursive set of functions calling in tail position should
>> be fine - all your examples are ok.
>>
>> On Tue, Jun 19, 2018, 2:37 PM Никита Фуфаев <kitttoran at gmail.com> wrote:
>>
>>> Hello everyone
>>>
>>> In C you can't implement main loop with recursion like
>>> void mainLoop() {
>>> doSomething();
>>> mainLoop();
>>> }
>>> because without optimisations stack will overflow.
>>> In haskell it's common to write
>>> mainLoop = doSomething >> mainLoop, and it doesn't leak memory because
>>> of haskell's evaluation model.
>>> Does memory leak or argument stack overflow happen in this case?
>>> mainLoop = doSomething >> mainLoop >> exit ExitSuccess
>>> What about this case?
>>> mainLoopModeA = do
>>> doSomething
>>> when condition mainLoopModeB
>>> mainLoopModeA
>>> mainLoopModeB = do
>>> doSomethingElse
>>> when anotherCondition mainLoopModeA
>>> mainLoopModeB
>>>
>>> or this case?
>>> mainLoopModeA = do
>>> doSomething
>>> if condition
>>> then mainLoopModeB
>>> else mainLoopModeA
>>> mainLoopModeB = do
>>> doSomethingElse
>>> if anotherCondition
>>> then mainLoopModeA
>>> else mainLoopModeB
>>>
>>> --
>>> Nikita Fufaev
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> To (un)subscribe, modify options or view archives go to:
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>>> Only members subscribed via the mailman list are allowed to post.
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> To (un)subscribe, modify options or view archives go to:
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>> Only members subscribed via the mailman list are allowed to post.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180619/02f121b5/attachment.html>
More information about the Haskell-Cafe
mailing list