Tengo un problema con IO no se ejecuta en orden, incluso dentro de una construcción do.¿Por qué mi IO no se ejecuta en orden?
En el siguiente código solo estoy haciendo un seguimiento de las tarjetas que quedan, donde la tarjeta es una tupla de caracteres (uno para el palo y el otro para el valor), luego se le pregunta continuamente qué tarjetas se han jugado. Quiero que el putStr
se ejecute entre cada entrada, y no al final como ahora.
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
¡Código incorrecto! Aquí introduce una falla de coincidencia de patrón potentiel. –
Es cierto que el caso no es exhaustivo, pero como una prueba de concepto (con respecto a las operaciones IO) hace el trabajo. – perimosocordiae