p package:th-printf
Like
s, but prints the resulting string to
stdout.
[p|Hello, %s! (%d people greeted)|] :: MonadIO m => ... -> m ()
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
Like
p, but takes as its first argument the
Handle to
print to.
[hp|Hello, %s! (%d people greeted)|] :: MonadIO m => Handle -> ... -> m ()
Takes a format string as input and produces a tuple (args,
outputExpr).
This function processes character escapes as they would appear in
Haskell source code. It will emit warnings (or throw an error, as
appropriate) when given an invalid format string.
Use if you wish to leverage th-printf in conjunction with,
for example, an existing logging library.