1
作爲一個練習,我試圖在Haskell中實現一個遊戲。我似乎沒有掌握的是IO的工作原理。我看,這樣的事情就爲了讓IO字符串的工作,函數getline返回可用純代碼:Haskell中的IO問題
main = do
foo <- getLine
do_something_with foo
我結束了該代碼得到了稍微複雜,我不明白爲什麼它止跌沒有工作。我的代碼如下所示:
game_loop game = do
show game
coords <- getLine
game_loop (add_move game (parse_coords coords))
main = game_loop new_game
我得到這個樣子的錯誤:
src/main.hs:5:13:
Couldn't match type ‘IO’ with ‘[]’
Expected type: [String]
Actual type: IO String
In a stmt of a 'do' block: coords <- getLine
In the expression:
do { show game;
coords <- getLine;
game_loop (add_move game (parse_coords coords)) }
src/main.hs:8:1:
Couldn't match expected type ‘IO t0’ with actual type ‘[b0]’
In the expression: main
When checking the type of the IO action ‘main’ }
其中5號線是一個與<-
和8是一個與main =
。
'show'只返回一個字符串' ',它不會在屏幕上打印任何內容。也許'打印遊戲'而不是? (注意:'print x = putStrLn(show x)') – bheklilr
感謝您的提示!我想這將是下一個之後。 :) – rausch