У меня возникла проблема с выполнением IO не в порядке, даже внутри конструкции do.Почему мой IO не выполнен в порядке?
В следующем коде я просто отслеживаю, какие карты оставлены, где карта является кортежем символов (один для костюма и один для значения), после чего пользователю постоянно спрашивают, какие карты были сыграны. Я хочу, чтобы putStr
выполнялся между каждым входом, а не в самом конце, как сейчас.
module Main where
main = doLoop cards
doLoop xs = do putStr $ show xs
s <- getChar
n <- getChar
doLoop $ remove (s,n) xs
suits = "SCDH"
vals = "A23456789JQK"
cards = [(s,n) | s <- suits, n <- vals]
type Card = (Char,Char)
remove :: Card -> [Card] -> [Card]
remove card xs = filter (/= card) xs
Плохой код! Здесь вы вводите ошибку соответствия шаблону. –
Правда, дело далеко не исчерпывающее, но в качестве доказательства концепции (относительно операций ввода-вывода) оно выполняет эту работу. – perimosocordiae