В качестве упражнения я пытаюсь реализовать игру в Haskell. Однако я не понимаю, как работает IO. Я читала, что что-то подобное будет работать для того, чтобы сделать IO String, который возвращает GetLine использовать в чистом коде:IO проблемы в Haskell
main = do
foo <- getLine
do_something_with foo
код я закончил с получил немного более сложным, и я не понимаю, почему это Wouldn Не работай. Мой код выглядит следующим образом:
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