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 (mailto: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(http://Control.Exception.evaluate) needs to be involved somewhere. -- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com(mailto:allbery.b@gmail.com) ballbery@sinenomine.net(mailto:ballbery@sinenomine.net) unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net (http://sinenomine.net) "