Warum wird mein IO nicht in der richtigen Reihenfolge ausgeführt?

Ich habe ein Problem damit, dass E / A nicht ordnungsgemäß ausgeführt wird, auch nicht innerhalb eines do-Konstrukts.

Im folgenden Code verfolge ich nur, welche Karten noch übrig sind, wo die Karte ein Tupel von Zeichen ist (eine für Farbe und eine für Wert), dann wird der Benutzer fortlaufend gefragt, welche Karten gespielt wurden. Ich will dasputStr muss zwischen den einzelnen Eingaben ausgeführt werden und nicht ganz am Ende, wie es jetzt ist.

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

Antworten auf die Frage(6)

Ihre Antwort auf die Frage