Why isn't my IO executed in order?

Posted by HaskellElephant on Stack Overflow See other posts from Stack Overflow or by HaskellElephant
Published on 2010-04-24T23:56:37Z Indexed on 2010/04/25 0:03 UTC
Read the original article Hit count: 202

Filed under:

Hi, I'm having some fun learning about the haskell IO. However in my recent exploration of it I have encountered some problems with IO not executing in order, even inside a do construct. In the following code I am just keeping track of what cards are left, where the card is a tuple of chars (one for suit and one for value) then the user is continously asked for wich cards have been played. I want the putStr to be executed between each input, and not at the very end like it is now.

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

© Stack Overflow or respective owner

Related posts about haskell