Tôi gặp vấn đề với IO không thực hiện theo thứ tự, ngay cả bên trong một cấu trúc làm.Tại sao IO không được thực thi theo thứ tự?
Trong đoạn mã sau, tôi chỉ theo dõi thẻ nào còn lại, trong đó thẻ là một bộ ký tự (một cho phù hợp và một cho giá trị), sau đó người dùng liên tục được hỏi về thẻ nào đã được phát. Tôi muốn putStr
được thực hiện giữa mỗi đầu vào và không phải ở cuối cùng như hiện tại.
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
Mã lỗi! Bạn giới thiệu một sự thất bại về mô hình potentiel ở đây. –
True, trường hợp là xa đầy đủ, nhưng như là một bằng chứng về khái niệm (liên quan đến các hoạt động IO) nó hiện công việc. – perimosocordiae