Как оценить IO Bools в Haskell - PullRequest
1 голос
/ 01 октября 2011

Я пытаюсь написать функцию, которая принимает IO Bool и делает вещи, основываясь на том, что это такое, но я не могу понять, как оценить IO Bool. Я пытался сказать do cond и do {cond==True}, но получил ошибку Couldn't match expected type 'Bool' against inferred type 'a b'. Может кто-нибудь направить меня к решению?

1 Ответ

6 голосов
/ 01 октября 2011

Вам нужно будет распаковать / вытащить bool из IO, прежде чем вы сможете его использовать.Вот пример:

main = useBool trueIO

trueIO :: IO Bool
trueIO = return True

useBool :: IO Bool -> IO ()
useBool a = do
    b <- a
    putStrLn (show b)
...