[-haskell] On Wed, Apr 21, 2010 at 5:54 PM, Heinrich Apfelmus <apfel...@quantentunnel.de> wrote: > David Anderson wrote: >> Dear Haskellers, >> >> I'm happy, and only slightly intimidated, to announce the initial >> release of forkable-monad. >> >> The short version is that forkable-monad exports a replacement forkIO >> that lets you do this: >> >> type MyMonad = ReaderT Config (StateT Ctx IO) >> >> startThread :: MyMonad ThreadId >> startThread = forkIO threadMain >> >> threadMain :: MyMonad () >> threadMain = forever $ liftIO $ putStrLn "Painless monad stack forking!" >> >> Note the lack of monad stack deconstruction and reconstruction to >> transport it over to the new thread. You'll find the details in the >> Haddock documentation for the module. > > Nice work! > > It appears to me that this is subsumed by the recent MonadMorphIO > proposal that Anders Kaseorg came up with, though? > > http://article.gmane.org/gmane.comp.lang.haskell.libraries/12902 > > > fork :: MonadMorphIO m => m () -> m () > fork m = morphIO $ \down -> forkIO (down m >> return ()) > >> down (return ())
Hmm, quite possibly. It is also quite similar to another implementation of forkable monad stacks I came across after finishing this first version of the library, and to what I had tentatively called "unliftIO" with a slightly different type, in another experiment in messing with forking monad stacks. So, it seems that I am reinventing wheels that others have generalized better :-). That's fine, it's the expected result of launching and iterating, especially given my current command of Haskell. So I should now focus on reducing the reinvention. Most of the discussion that followed the message that you linked is currently beyond my understanding of category theory. However, I should probably go and talk to the maintainer of MonadCatchIO-* about extracting something like MonadMorphIO into a package, and making both their exception handling modules and this forking module reuse it. Thanks for the pointer! - Dave > Regards, > Heinrich Apfelmus > > -- > http://apfelmus.nfshost.com > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe