<div dir="ltr">At the least transformers should probably provide the manual overrides for <* and *> for all of the monad transformer data types. <div><br></div><div>That should fix these cases.<div><br></div><div>-Edward</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 6, 2016 at 5:08 AM, Zoran Bosnjak <span dir="ltr"><<a href="mailto:zoran.bosnjak@via.si" target="_blank">zoran.bosnjak@via.si</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Dear base and mtl maintainers,<br>
I would like to report a memory leak problem (not sure which haskell<br>
component) when using "forever" in combination with "readerT" or "stateT".<br>
Simple test program to reproduce the problem:<br>
---<br>
import Control.Concurrent<br>
import Control.Monad<br>
import Control.Monad.Trans<br>
import Control.Monad.Trans.Reader<br>
import Control.Monad.Trans.State<br>
<br>
main :: IO ()<br>
main = do<br>
    -- no leak when using loop1 instead of loop2<br>
    --let loop1 = (liftIO $ threadDelay 1) >> loop1<br>
    let loop2 = forever (liftIO $ threadDelay 1)<br>
<br>
    _ <- runStateT (runReaderT loop2 'a') 'b'<br>
    return ()<br>
---<br>
<br>
I have asked on haskell-cafe, but the analysis is above my haskell<br>
knowledge:<br>
<a href="https://mail.haskell.org/pipermail/haskell-cafe/2016-October/125176.html" rel="noreferrer" target="_blank">https://mail.haskell.org/<wbr>pipermail/haskell-cafe/2016-<wbr>October/125176.html</a><br>
<a href="https://mail.haskell.org/pipermail/haskell-cafe/2016-October/125177.html" rel="noreferrer" target="_blank">https://mail.haskell.org/<wbr>pipermail/haskell-cafe/2016-<wbr>October/125177.html</a><br>
<a href="https://mail.haskell.org/pipermail/haskell-cafe/2016-October/125178.html" rel="noreferrer" target="_blank">https://mail.haskell.org/<wbr>pipermail/haskell-cafe/2016-<wbr>October/125178.html</a><br>
<br>
regards,<br>
Zoran<br>
<br>
</blockquote></div><br></div>