[Haskell-cafe] forkM fails

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


Hi

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
expect.

however proc is not executed

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

Any idea?. Thanks in advance


More information about the Haskell-Cafe mailing list