[Haskell-cafe] forkM fails

Alberto G. Corona agocorona at gmail.com
Fri Sep 4 18:06:50 EDT 2009


I need to execute a procedure not in the IO monad, but in an any monad:

I defined:

forkM :: Monad m=> m a ->  IO ThreadId
forkM proc=forkIO $ proc  `seq` return()

I assumed  that seq will force the evaluation of proc and after, it
will discard his type (m a) and return () in the IO monad.as forkIO

however proc is not executed

Prelude> Control.Concurrent.forkIO $ print "hola"
ThreadId 331
Prelude> let forkM p=Control.Concurrent.forkIO $ p `seq` return ()
Prelude> forkM $ print "hola"
ThreadId 493

Any idea?. Thanks in advance

More information about the Haskell-Cafe mailing list