The real question is, does this mean that GHC is stopping the world every time it puts an MVar?

Tim

---------- Původní zpráva ----------
Od: Brandon Allbery <allbery.b@gmail.com>
Datum: 24. 12. 2012
Předmět: Re: [Haskell-cafe] multi-thread and lazy evaluation


On Mon, Dec 24, 2012 at 8:45 AM, Corentin Dupont <corentin.dupont@gmail.com> wrote:
execBlocking :: MVar (Maybe MyData) -> IO ()
execBlocking mv = do
   let (a::String) = a
   --If you uncomment the next line, it will work
   --putStrLn $ show a
   putMVar mv (Just $ MyData a "toto")

It's laziness, yes; you need to do something along the lines of

> let a = length a `seq` a

or possibly Control.Exception.evaluate needs to be involved somewhere.
 
--
brandon s allbery kf8nh                               sine nomine associates
allbery.b@gmail.com                                  ballbery@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net