Puzzling (to me) type error message
Colin Adams
colinpauladams at googlemail.com
Tue Mar 24 04:00:10 EDT 2009
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)
>> getCurrentTime
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?
More information about the Glasgow-haskell-users
mailing list