th-printf-0.7: Quasiquoters for printf

Safe HaskellNone
LanguageHaskell2010

Language.Haskell.Printf

Description

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)
"4294967295"

Thus, any time you want to print a number using the unsigned, octal, or hex specifiers, your input must be an instance of Bounded.

Synopsis

Documentation

s :: QuasiQuoter Source #

[s|Hello, %s! (%d people greeted)|] :: ... -> String

This formatter follows the guidelines listed here, except for %n (store number of printed characters) for obvious reasons.

%c     :: Char
%s     :: String
%q     :: Text -- lazy text
%Q     :: Text -- strict text

-- datatypes with Show instances
%?     :: Show a => a

-- signed integer types
%d, %i :: Integral i => i

-- unsigned integer types
%u     :: (Bounded i, Integral i) => i
%o     :: (Bounded i, Integral i) => i
%x, %X :: (Bounded i, Integral i) => i

-- floats
%a, %A :: RealFloat f => f
%e, %E :: RealFloat f => f
%f, %F :: RealFloat f => f
%g, %G :: RealFloat f => f

%p     :: Ptr a

t :: QuasiQuoter Source #

Behaves identically to s, but produces lazy Text.

p :: QuasiQuoter Source #

Like s, but prints the resulting string to stdout.

[p|Hello, %s! (%d people greeted)|] :: MonadIO m => ... -> m ()

hp :: QuasiQuoter Source #

Like p, but takes as its first argument the Handle to print to.

[hp|Hello, %s! (%d people greeted)|] :: MonadIO m => Handle -> ... -> m ()