
getCurrentTime
I'm trying out concurrent haskell (never mind that the code isn't actually very concurrent - I'm just trying to get things to compile first). So with the following code, I get: play_move :: IORef Game_state -> IO () play_move game_state_ior = do (_, state, _) <- readIORef game_state_ior putStr "Playing AI: " start_time <- getCurrentTime ai_in_channel <- newChan ai_out_channel <- newChan writeChan ai_in_channel state ai_thread_id <- forkIO (run_ai ai_in_channel ai_out_channel) move <- readChan ai_out_channel end_time <- move `seq` (modifyIORef game_state_ior $! update_interactive_from_move move) putStrLn $ show $ (diffUTCTime end_time start_time) run_ai :: Chan Non_interactive_state -> Chan Move.Move -> IO () run_ai in_channel out_channel = do state <- readChan in_channel let move = recommended_move state writeChan out_channel move UI.hs:625:45: Not in scope: type constructor or class `Move.Move' If I then comment-out the type signature for run_ai, it compiles fine with the following warning message: UI.hs:626:0: Warning: Definition but no type signature for `run_ai' Inferred type: run_ai :: Chan Non_interactive_state -> Chan Move.Move -> IO () Ghc 6.10.1 on Mac OS X. What is going on?