[Haskell-cafe] Memory leak in infinite recursion

Mark Wotton mwotton at gmail.com
Wed Jun 20 00:02:41 UTC 2018


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20180619/fd929dfa/attachment.html>


More information about the Haskell-Cafe mailing list