
Hi there, I'm trying to upgrade some code to ghc 6.12 but under -Wall, the new warning about unused do binds is triggering on Text.Printf.printf usage. This code: import Text.Printf main :: IO () main = do printf "Hello, world\n" printf "Hello the second time\n" When run with runhaskell -Wall gives: Warning: A do-notation statement discarded a result of type GHC.Prim.Any. Suppress this warning by saying "_ <- printf "Hello, world\n"", or by using the flag -fno-warn-unused-do-bind. Now, I'm confused why such a simple usage of printf triggers this warning; enforcing the first printf to type IO () fixes the warning, but it seems strange to no longer be able to simply write printf. Anyone knows a workaround, or can enlighten me what I'm doing wrong? A side question would be why we have "instance PrintfType (IO a)" instead of "instance PrintfType (IO ())"; what use is there for that generic type? Can printf return anything else than IO () (when used under IO at all)? thanks, iustin