printf package:th-printf
Text.Printf is a useful module, but due to the typeclass hacks
it uses, it can be hard to tell if the format string you wrote is
well-formed or not. This package provides a mechanism to create
formatting functions at compile time.
Note that, to maintain consistency with other printf implementations,
negative ints that are printed as unsigned will "underflow".
(Text.Printf does this too.)
>>> [s|%u|] (-1 :: Int32)
WAS "4294967295"
NOW Not in scope: type constructor or class `Int32'
Thus, any time you want to print a number using the unsigned, octal,
or hex specifiers, your input must be an instance of
Bounded.
Quasiquoters for printf
Quasiquoters for string and text printf