
On Sun, May 27, 2007 at 01:32:40AM +0100, Neil Mitchell wrote:
Sadly, it doesn't seem to work for me. Here are the tests I've been using, the results I get, and what I would have liked. All are GHC 6.6 on Windows.
-- TEST 1 import System.TimeoutGHC
main :: IO () main = do r <- timeout (5 * 10^6) (putStrLn "here") print r
Without -threaded: here >> Just () >> wait 5 seconds
Without -threaded: here >> wait 5 seconds >> Just ()
So, either way, I get a 5 second delay - not something I want.
Works for me with 6.6.1 on Windows and Linux, e.g. on Windows: $ ghc --make -threaded q.hs -o q [1 of 2] Compiling TimeoutGHC ( TimeoutGHC.hs, TimeoutGHC.o ) [2 of 2] Compiling Main ( q.hs, q.o ) Linking q.exe ... $ time ./q here Just () real 0m0.070s user 0m0.010s sys 0m0.010s $ ghc --version The Glorious Glasgow Haskell Compilation System, version 6.6.1
-- TEST 2 import System.TimeoutGHC
main :: IO () main = do r <- timeout (length [1..]) (putStrLn "here") print r
Now, with either -threaded, or without, it never terminates.
This is expected, as it looks at n before doing anything. I'm not sure why it does so though; it would be nice if timeout just acted as if n was positive and left other cases to the caller. Thanks Ian