Safe Haskell | None |
---|---|
Language | Haskell98 |
Text.Printf.Mauke
- printf :: PrintfType r => String -> r
- hPrintf :: HPrintfType r => Handle -> String -> r
- class PrintfArg a where
- data Arg
- class FromChar a where
- class ToChar a where
- class PrintfType a
- class HPrintfType a
Documentation
printf :: PrintfType r => String -> r Source
Format a variable number of arguments according to a format string,
similar to (s)printf in Perl. The return value is either a String
or
, in which case the result is printed to IO
astdout
. If you use the
IO
variant, don't use the result: Because it has to be of any type a
,
this library makes it undefined
.
The format string consists of ordinary characters (everything except
'%'
), which are passed through unchanged, and formatting directives,
which have the following form:
% flag* vector? width? precision? type
(*
and ?
mean 0 or more and 0 or 1 of the preceding item, respectively.)
Flags:
space
- prefix positive numbers with a space
+
- prefix positive numbers with a plus sign (overrides space if both are present)
-
- left-justify within the field
0
- pad with zeroes on the left, not spaces
#
- prefix binary numbers with
0b
/0B
, octal numbers with0o
/0O
and hexadecimal numbers with0x
/0X
The vector flag v
tells printf
to format each character in the string
argument according to the current directive, then joins the results with a
separator that defaults to "."
. When *v
is used, the separator is
taken from the argument list (use e.g.
if you
want no separator).printf
"%*v.2x" "" str
The width is either a decimal integer or *
, in which case the width is
taken from the argument list (this argument must be an integer). It
specifies the minimum width for this field. Shorter values are padded on
the left with spaces (but this can be changed by the 0
and -
flags). If
the width taken from the argument list is negative, it behaves as if the
-
flag was specified.
The precision consists of a .
followed by digits or a *
(see the
description of width above). The effects depend on the format type:
- for floating point formats, this specifies the number of digits after the decimal point
- for string formats, this is the maximum number of characters to appear (longer strings are truncated)
- for integer formats, this is the minimum number of digits to appear in the output; shorter values are zero-padded
Types:
%
- A percent sign. No argument is consumed.
c
- A character. If the argument is an integer, it is converted with
chr
. s
- A string.
d
- A decimal integer.
u
- An unsigned decimal integer.
b
- A binary integer.
B
- Like
b
, but using a0B
prefix with#
. o
- An octal integer.
O
- Like
o
, but using a0O
prefix with#
. x
- A hexadecimal integer.
X
- Like
x
, but using uppercase letters. e
- A floating point number in scientific notation.
E
- Like
e
, but using an uppercaseE
. f
- A floating point number in fixed decimal notation.
g
- A floating point number in
%e
or%f
notation. G
- Like
g
, but using an uppercaseE
. _
- A generic format; it behaves like
%c
,%s
,%d
or%g
, depending on the argument type.
hPrintf :: HPrintfType r => Handle -> String -> r Source
class PrintfArg a where Source
Class for valid printf arguments.
Instances
The internal type used to wrap and store all arguments.
class PrintfType a Source
Minimal complete definition
collect
Instances
FromChar a => PrintfType [a] Source | |
PrintfType (IO a) Source | |
(PrintfArg a, PrintfType r) => PrintfType (a -> r) Source |
class HPrintfType a Source
Minimal complete definition
hcollect
Instances
HPrintfType (IO a) Source | |
(PrintfArg a, HPrintfType r) => HPrintfType (a -> r) Source |