[Haskell-cafe] How to use "bracket" properly ?

zaxis z_axis at 163.com
Mon Oct 19 01:33:09 EDT 2009


winSSQ count noRed noBlue = do {
    yesRed <-  [1..33] \\ noRed;
    yesBlue <- [1..16] \\ noBlue;
    bracket (openFile "ssqNum.txt" WriteMode) (hClose) (\hd1 -> pickSSQ
count yesRed yesBlue hd1);
    return ()
}
will report:
Couldn't match expected type `IO ()' against inferred type `[()]'
    In a stmt of a 'do' expression:
        bracket
          (openFile "ssqNum.txt" WriteMode)
          (hClose)
          (\ hd1 -> pickSSQ count yesRed yesBlue hd1)

However, the following works fine:

winSSQ count noRed noBlue = do
    let yesRed =  [1..33] \\ noRed
    let yesBlue = [1..16] \\ noBlue
    bracket (openFile "ssqNum.txt" WriteMode) (hClose) (\hd1 -> pickSSQ
count yesRed yesBlue hd1)

Why ?
-- 
View this message in context: http://www.nabble.com/How-to-use-%22bracket%22-properly---tp25953522p25953522.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.



More information about the Haskell-Cafe mailing list