Format a variable number of arguments with the C-style formatting string.
The return value is either String or (IO a).
The format string consists of ordinary characters and /conversion
specifications/, which specify how to format one of the arguments
to printf in the output string. A conversion specification begins with the
character %, followed by one or more of the following flags:
- left adjust (default is right adjust)
+ always use a sign (+ or -) for signed conversions
0 pad with zeroes rather than spaces
followed optionally by a field width:
num field width
* as num, but taken from argument list
followed optionally by a precision:
.num precision (number of decimal places)
and finally, a format character:
c character Char, Int, Integer, ...
d decimal Char, Int, Integer, ...
o octal Char, Int, Integer, ...
x hexadecimal Char, Int, Integer, ...
X hexadecimal Char, Int, Integer, ...
u unsigned decimal Char, Int, Integer, ...
f floating point Float, Double
g general format float Float, Double
G general format float Float, Double
e exponent format float Float, Double
E exponent format float Float, Double
s string String
Mismatch between the argument types and the format string will cause
an exception to be thrown at runtime.
> printf "%d\n" (23::Int)
> printf "%s %s\n" "Hello" "World"
> printf "%.2f\n" pi