| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Formatting.Internal
Description
Internal format starters.
Synopsis
- newtype Format r a = Format {}
- (%) :: Format r a -> Format r' r -> Format r' a
- (%.) :: Format r (Builder -> r') -> Format r' a -> Format r a
- now :: Builder -> Format r r
- bind :: Format r a -> (Builder -> Format r' r) -> Format r' a
- mapf :: (a -> b) -> Format r (b -> t) -> Format r (a -> t)
- later :: (a -> Builder) -> Format r (a -> r)
- format :: Format Text a -> a
- sformat :: Format Text a -> a
- bprint :: Format Builder a -> a
- bformat :: Format Builder a -> a
- fprint :: Format (IO ()) a -> a
- fprintLn :: Format (IO ()) a -> a
- hprint :: Handle -> Format (IO ()) a -> a
- hprintLn :: Handle -> Format (IO ()) a -> a
- formatToString :: Format String a -> a
Documentation
A formatter. When you construct formatters the first type
parameter, r, will remain polymorphic. The second type
parameter, a, will change to reflect the types of the data that
will be formatted. For example, in
myFormat :: Format r (Text -> Int -> r) myFormat = "Person's name is " % text % ", age is " % hex
the first type parameter remains polymorphic, and the second type
parameter is Text -> Int -> r, which indicates that it formats a
Text and an Int.
When you run the Format, for example with format, you provide
the arguments and they will be formatted into a string.
> format ("Person's name is " % text % ", age is " % hex) "Dave" 54
"Person's name is Dave, age is 36"
Instances
| Functor (Format r) Source # | This can be used almost like contramap, e.g: formatter :: Format r (b -> r) formatter = _ adapter :: a -> b adapter = _ adapted :: Format r (a -> r) adapted = fmap (. adapter) formatter |
| Category Format Source # | The same as (%). At present using |
| a ~ r => IsString (Format r a) Source # | Useful instance for writing format string. With this you can
write |
Defined in Formatting.Internal Methods fromString :: String -> Format r a # | |
| Semigroup (Format r (a -> r)) Source # | |
| Monoid (Format r (a -> r)) Source # | Useful instance for applying two formatters to the same input
argument. For example: |
(%) :: Format r a -> Format r' r -> Format r' a infixr 9 Source #
Concatenate two formatters.
formatter1 % formatter2 is a formatter that accepts arguments for
formatter1 and formatter2 and concatenates their results. For example
format1 :: Format r (Text -> r) format1 = "Person's name is " % text
format2 :: Format r r format2 = ", "
format3 :: Format r (Int -> r) format3 = "age is " % hex
myFormat :: Format r (Text -> Int -> r) myFormat = format1 % format2 % format3
Notice how the argument types of format1 and format3 are
gathered into the type of myFormat.
(This is actually the composition operator for Formats
Category instance, but that is (at present) inconvenient to use
with regular Prelude. So this function is provided as a
convenience.)
(%.) :: Format r (Builder -> r') -> Format r' a -> Format r a infixr 8 Source #
Function compose two formatters. Will feed the result of one formatter into another.
bind :: Format r a -> (Builder -> Format r' r) -> Format r' a Source #
Monadic indexed bind for holey monoids.
mapf :: (a -> b) -> Format r (b -> t) -> Format r (a -> t) Source #
Functorial map over a formatter's input. Example: format (mapf (drop 1) string) "hello"
later :: (a -> Builder) -> Format r (a -> r) Source #
Format a value of type a using a function of type a ->
. For example, Builderlater (f :: Int -> Builder) produces
Format r (Int -> r).
fprintLn :: Format (IO ()) a -> a Source #
Run the formatter and print out the text to stdout, followed by a newline.
hprint :: Handle -> Format (IO ()) a -> a Source #
Run the formatter and put the output onto the given Handle.
hprintLn :: Handle -> Format (IO ()) a -> a Source #
Run the formatter and put the output and a newline onto the given Handle.
formatToString :: Format String a -> a Source #
Run the formatter and return a list of characters.