[Haskell-cafe] different behaviours with or without putStrLn

Corentin Dupont corentin.dupont at gmail.com
Sun Jan 12 22:07:17 UTC 2014


Hi guys,
I'm experimenting different behaviours with or without a "putStrLn"! :(

Basically, with the following code, I want the evaluation to really happen
on the "evaluate".
I found out that it doesn't: it is evaluated elsewhere (I don't know where).
If I put a putStrLn (commented below), the evaluation really happens there.







*execCommand :: (TVar MyState) -> StateT MyState IO () -> IO ()execCommand
ts sm = do   s <- atomically $ readTVar ts   s' <- execStateT sm s   s'' <-
evaluate s'          --evaluation should happen here, but it doesn't
--putStrLn $ displayMulti $ _multi s''   atomically $ writeTVar ts s''*

To give you more context, I have a state that, when evaluated, might not
terminate.
So I added a watchdog (like in mueval), that will kill the thread in case
the evaluation doesn't terminate.
That's why I need to be sure of where the evaluation takes place.

Thanks!
Corentin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20140112/3ae19a76/attachment.html>


More information about the Haskell-Cafe mailing list