J'ai un problème avec les E/S qui ne s'exécutent pas dans l'ordre, même dans un construit.Pourquoi mon E/S n'est-elle pas exécutée dans l'ordre?
Dans le code suivant, je ne fais que suivre les cartes restantes, où la carte est un jeu de caractères (un pour la couleur et un pour la valeur), l'utilisateur est continuellement demandé quelles cartes ont été jouées. Je veux que le putStr
soit exécuté entre chaque entrée, et pas à la toute fin comme c'est le cas maintenant.
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
Mauvais code! Vous introduisez un échec de correspondance de modèle potentiel ici. –
Certes, le cas est loin d'être exhaustif, mais en tant que preuve de concept (en ce qui concerne les opérations d'E/S), il fait le travail. – perimosocordiae