
Hi All, I am looking to make a simple program that polls an interface once a second or so. I thought I could use threadDelay for this, so knocked up the following toy program to test my idea. module TD where import Control.Concurrent import Control.Concurrent.MVar main :: IO () main = do mv <- newEmptyMVar forkIO $ loop mv 0 "Hai" takeMVar mv return () where loop mv n msg = do putStrLn msg threadDelay 10000 if n < 10 then loop mv (n+1) msg else putMVar mv () It doesn't work, in as much as I see all the messages printed seemingly as fast as Std out will print them. What am I doing wrong? All help is much appreciated, Ben