[Haskell-beginners] How to display a time difference?

Colin Paul Adams colin at colina.demon.co.uk
Wed Mar 18 06:06:30 EDT 2009

The code of the following routine is intended to indicate how long it
takes for the computer to make a move. However the time is printed (as
very close to zero) long before the move is made.

I must be missing something about sequencing actions in the IO monad.

play_move :: IORef Game_state -> IO ()
play_move game_state_ior = do
  (_, state, _) <- readIORef game_state_ior  
  putStr "Playing AI: "
  start_time <- getCurrentTime
  let move = recommended_move state
  modifyIORef game_state_ior (update_interactive_from_move move)
  end_time <- getCurrentTime
  putStrLn $ show $ (diffUTCTime end_time start_time)

Colin Adams
Preston Lancashire

More information about the Beginners mailing list