[Haskell-beginners] GHC 6.12, -fwarn-unused-do-bind and Text.Printf

Iustin Pop iusty at k1024.org
Mon Feb 22 17:02:13 EST 2010


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


More information about the Beginners mailing list