[Haskell-cafe] Memory leak in infinite recursion

David Feuer david.feuer at gmail.com
Wed Jun 20 00:06:40 UTC 2018


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/47a21d00/attachment.html>


More information about the Haskell-Cafe mailing list