
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