Hi Brandon,
indeed in my example if you add:
*b <- evaluate a*
after the definition of "a" it works.
However, in my original program it doesn't work, I suppose because I
interpret the user submitted code (here "*let (a::String) = a" *
 for the example) via Hint and Hint-server, and the interpretation must be
done in another thread...

Best,
Corentin

On Mon, Dec 24, 2012 at 3:46 PM, Brandon Allbery <[email protected]>wrote:

> On Mon, Dec 24, 2012 at 8:45 AM, Corentin Dupont <
> [email protected]> 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
> [email protected]
> [email protected]
> unix, openafs, kerberos, infrastructure, xmonad
> http://sinenomine.net
>
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to