Mam problem z IO nie wykonywania w kolejności, nawet wewnątrz konstrukcji.Dlaczego moje IO nie jest wykonane w kolejności?
W poniższym kodzie po prostu śledzę, jakie karty zostały, gdzie karta jest krotką znaków (jeden dla koloru i jeden dla wartości), a następnie użytkownik jest stale zapytany, które karty zostały zagrane. Chcę, aby putStr
było wykonywane między każdym wejściem, a nie na samym końcu, tak jak jest teraz.
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
Zły kod! Wprowadzasz tutaj błąd dopasowywania wzorca potęgowego. –
To prawda, że sprawa nie jest wyczerpująca, ale jako dowód koncepcji (w odniesieniu do operacji IO) spełnia swoją rolę. – perimosocordiae