Text.Printer.Fractional

text-printer-0.5: Abstract interface for text builders/printers.

Safe Haskell | None
Language | Haskell2010

Text.Printer.Fractional

Contents

- Positional numeral systems
- Optionality characteristic
- Fraction printers

Description

Print fractions.

Synopsis

- class PositionalSystem s where
- class PositionalSystem s => BitSystem s where
- data Binary = Binary
- data Octal = Octal
- data Decimal = Decimal
- data Hexadecimal = Hexadecimal
- data LowHex = LowHex
- data UpHex = UpHex
- data Optional
  - = Optional
  - | Required
- isOptional :: Optional -> Bool
- isRequired :: Optional -> Bool
- fraction' :: (PositionalSystem s, Real α, Printer p) => s -> p -> p -> p -> p -> Optional -> α -> p
- fraction :: (Real α, Printer p) => α -> p

# Positional numeral systems

class PositionalSystem s where #

Positional numeral system.

Minimal complete definition

systemName, radixIn, isDigitIn, isNzDigitIn, fromDigitIn, fromNzDigitIn, unsafeFromDigitIn, intToDigitIn

Methods

systemName :: s -> String #

The name of the system (e.g. "binary", "decimal").

radixIn :: Num α => s -> α #

The radix of the system.

isDigitIn :: s -> Char -> Bool #

Test if a character is a digit.

isNzDigitIn :: s -> Char -> Bool #

Test if a character is a non-zero digit.

fromDigitIn :: Num α => s -> Char -> Maybe α #

Map digits to the corresponding numbers. Return `Nothing` on other inputs.

fromNzDigitIn :: Num α => s -> Char -> Maybe α #

Map non-zero digits to the corresponding numbers. Return `Nothing` on other inputs.

unsafeFromDigitIn :: Num α => s -> Char -> α #

Map digits to the corresponding numbers. No checks are performed.

intToDigitIn :: s -> Int -> Char #

Map `Int` values to the corresponding digits. Inputs must be non-negative and less than the radix.

printDigitIn :: Printer p => s -> Char -> p #

Print a digit.

printZeroIn :: Printer p => s -> p #

Instances

PositionalSystem UpHex # |
Methods systemName :: UpHex -> String # radixIn :: Num α => UpHex -> α # isDigitIn :: UpHex -> Char -> Bool # isNzDigitIn :: UpHex -> Char -> Bool # fromDigitIn :: Num α => UpHex -> Char -> Maybe α # fromNzDigitIn :: Num α => UpHex -> Char -> Maybe α # unsafeFromDigitIn :: Num α => UpHex -> Char -> α # intToDigitIn :: UpHex -> Int -> Char # printDigitIn :: Printer p => UpHex -> Char -> p # printZeroIn :: Printer p => UpHex -> p #
PositionalSystem LowHex # |
Methods systemName :: LowHex -> String # radixIn :: Num α => LowHex -> α # isDigitIn :: LowHex -> Char -> Bool # isNzDigitIn :: LowHex -> Char -> Bool # fromDigitIn :: Num α => LowHex -> Char -> Maybe α # fromNzDigitIn :: Num α => LowHex -> Char -> Maybe α # unsafeFromDigitIn :: Num α => LowHex -> Char -> α # intToDigitIn :: LowHex -> Int -> Char # printDigitIn :: Printer p => LowHex -> Char -> p # printZeroIn :: Printer p => LowHex -> p #
PositionalSystem Hexadecimal # |
Methods systemName :: Hexadecimal -> String # radixIn :: Num α => Hexadecimal -> α # isDigitIn :: Hexadecimal -> Char -> Bool # isNzDigitIn :: Hexadecimal -> Char -> Bool # fromDigitIn :: Num α => Hexadecimal -> Char -> Maybe α # fromNzDigitIn :: Num α => Hexadecimal -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Hexadecimal -> Char -> α # intToDigitIn :: Hexadecimal -> Int -> Char # printDigitIn :: Printer p => Hexadecimal -> Char -> p # printZeroIn :: Printer p => Hexadecimal -> p #
PositionalSystem Decimal # |
Methods systemName :: Decimal -> String # radixIn :: Num α => Decimal -> α # isDigitIn :: Decimal -> Char -> Bool # isNzDigitIn :: Decimal -> Char -> Bool # fromDigitIn :: Num α => Decimal -> Char -> Maybe α # fromNzDigitIn :: Num α => Decimal -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Decimal -> Char -> α # intToDigitIn :: Decimal -> Int -> Char # printDigitIn :: Printer p => Decimal -> Char -> p # printZeroIn :: Printer p => Decimal -> p #
PositionalSystem Octal # |
Methods systemName :: Octal -> String # radixIn :: Num α => Octal -> α # isDigitIn :: Octal -> Char -> Bool # isNzDigitIn :: Octal -> Char -> Bool # fromDigitIn :: Num α => Octal -> Char -> Maybe α # fromNzDigitIn :: Num α => Octal -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Octal -> Char -> α # intToDigitIn :: Octal -> Int -> Char # printDigitIn :: Printer p => Octal -> Char -> p # printZeroIn :: Printer p => Octal -> p #
PositionalSystem Binary # |
Methods systemName :: Binary -> String # radixIn :: Num α => Binary -> α # isDigitIn :: Binary -> Char -> Bool # isNzDigitIn :: Binary -> Char -> Bool # fromDigitIn :: Num α => Binary -> Char -> Maybe α # fromNzDigitIn :: Num α => Binary -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Binary -> Char -> α # intToDigitIn :: Binary -> Int -> Char # printDigitIn :: Printer p => Binary -> Char -> p # printZeroIn :: Printer p => Binary -> p #

class PositionalSystem s => BitSystem s where #

Positonal numeral system with a power of two radix.

Minimal complete definition

digitBitsIn, digitMaskIn, lastDigitIn

Methods

digitBitsIn :: s -> Int #

Numer of bits occupied by a digit.

digitMaskIn :: Num α => s -> α #

The number that has `digitBitsIn` least significant bits set to ones and all the other bits set to zeroes.

lastDigitIn :: Bits α => s -> α -> Int #

Map the last digit of a number to the corresponding `Int` value.

Instances

BitSystem UpHex # |
Methods digitBitsIn :: UpHex -> Int # digitMaskIn :: Num α => UpHex -> α # lastDigitIn :: Bits α => UpHex -> α -> Int #
BitSystem LowHex # |
Methods digitBitsIn :: LowHex -> Int # digitMaskIn :: Num α => LowHex -> α # lastDigitIn :: Bits α => LowHex -> α -> Int #
BitSystem Hexadecimal # |
Methods digitBitsIn :: Hexadecimal -> Int # digitMaskIn :: Num α => Hexadecimal -> α # lastDigitIn :: Bits α => Hexadecimal -> α -> Int #
BitSystem Octal # |
Methods digitBitsIn :: Octal -> Int # digitMaskIn :: Num α => Octal -> α # lastDigitIn :: Bits α => Octal -> α -> Int #
BitSystem Binary # |
Methods digitBitsIn :: Binary -> Int # digitMaskIn :: Num α => Binary -> α # lastDigitIn :: Bits α => Binary -> α -> Int #

data Binary #

The binary numeral system.

Constructors

Binary |

Instances

Eq Binary # |
Methods (==) :: Binary -> Binary -> Bool # (/=) :: Binary -> Binary -> Bool #
Ord Binary # |
Methods compare :: Binary -> Binary -> Ordering # (<) :: Binary -> Binary -> Bool # (<=) :: Binary -> Binary -> Bool # (>) :: Binary -> Binary -> Bool # (>=) :: Binary -> Binary -> Bool # max :: Binary -> Binary -> Binary # min :: Binary -> Binary -> Binary #
Read Binary # |
Methods readsPrec :: Int -> ReadS Binary # readList :: ReadS [Binary] # readPrec :: ReadPrec Binary # readListPrec :: ReadPrec [Binary] #
Show Binary # |
Methods showsPrec :: Int -> Binary -> ShowS # show :: Binary -> String # showList :: [Binary] -> ShowS #
Generic Binary # |
Associated Types type Rep Binary :: * -> * # Methods from :: Binary -> Rep Binary x # to :: Rep Binary x -> Binary #
BitSystem Binary # |
Methods digitBitsIn :: Binary -> Int # digitMaskIn :: Num α => Binary -> α # lastDigitIn :: Bits α => Binary -> α -> Int #
PositionalSystem Binary # |
Methods systemName :: Binary -> String # radixIn :: Num α => Binary -> α # isDigitIn :: Binary -> Char -> Bool # isNzDigitIn :: Binary -> Char -> Bool # fromDigitIn :: Num α => Binary -> Char -> Maybe α # fromNzDigitIn :: Num α => Binary -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Binary -> Char -> α # intToDigitIn :: Binary -> Int -> Char # printDigitIn :: Printer p => Binary -> Char -> p # printZeroIn :: Printer p => Binary -> p #
type Rep Binary # |
type Rep Binary = D1 (MetaData "Binary" "Text.Printer.Integral" "text-printer-0.5-AxgFIDpy8hMHcgHGWuxGGe" False) (C1 (MetaCons "Binary" PrefixI False) U1)

data Octal #

The octal numeral system.

Constructors

Octal |

Instances

Eq Octal # |
Methods (==) :: Octal -> Octal -> Bool # (/=) :: Octal -> Octal -> Bool #
Ord Octal # |
Methods compare :: Octal -> Octal -> Ordering # (<) :: Octal -> Octal -> Bool # (<=) :: Octal -> Octal -> Bool # (>) :: Octal -> Octal -> Bool # (>=) :: Octal -> Octal -> Bool # max :: Octal -> Octal -> Octal # min :: Octal -> Octal -> Octal #
Read Octal # |
Methods readsPrec :: Int -> ReadS Octal # readList :: ReadS [Octal] # readPrec :: ReadPrec Octal # readListPrec :: ReadPrec [Octal] #
Show Octal # |
Methods showsPrec :: Int -> Octal -> ShowS # show :: Octal -> String # showList :: [Octal] -> ShowS #
Generic Octal # |
Associated Types type Rep Octal :: * -> * # Methods from :: Octal -> Rep Octal x # to :: Rep Octal x -> Octal #
BitSystem Octal # |
Methods digitBitsIn :: Octal -> Int # digitMaskIn :: Num α => Octal -> α # lastDigitIn :: Bits α => Octal -> α -> Int #
PositionalSystem Octal # |
Methods systemName :: Octal -> String # radixIn :: Num α => Octal -> α # isDigitIn :: Octal -> Char -> Bool # isNzDigitIn :: Octal -> Char -> Bool # fromDigitIn :: Num α => Octal -> Char -> Maybe α # fromNzDigitIn :: Num α => Octal -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Octal -> Char -> α # intToDigitIn :: Octal -> Int -> Char # printDigitIn :: Printer p => Octal -> Char -> p # printZeroIn :: Printer p => Octal -> p #
type Rep Octal # |
type Rep Octal = D1 (MetaData "Octal" "Text.Printer.Integral" "text-printer-0.5-AxgFIDpy8hMHcgHGWuxGGe" False) (C1 (MetaCons "Octal" PrefixI False) U1)

data Decimal #

The decimal numeral system.

Constructors

Decimal |

Instances

Eq Decimal # |
Methods (==) :: Decimal -> Decimal -> Bool # (/=) :: Decimal -> Decimal -> Bool #
Ord Decimal # |
Methods compare :: Decimal -> Decimal -> Ordering # (<) :: Decimal -> Decimal -> Bool # (<=) :: Decimal -> Decimal -> Bool # (>) :: Decimal -> Decimal -> Bool # (>=) :: Decimal -> Decimal -> Bool # max :: Decimal -> Decimal -> Decimal # min :: Decimal -> Decimal -> Decimal #
Read Decimal # |
Methods readsPrec :: Int -> ReadS Decimal # readList :: ReadS [Decimal] # readPrec :: ReadPrec Decimal # readListPrec :: ReadPrec [Decimal] #
Show Decimal # |
Methods showsPrec :: Int -> Decimal -> ShowS # show :: Decimal -> String # showList :: [Decimal] -> ShowS #
Generic Decimal # |
Associated Types type Rep Decimal :: * -> * # Methods from :: Decimal -> Rep Decimal x # to :: Rep Decimal x -> Decimal #
PositionalSystem Decimal # |
Methods systemName :: Decimal -> String # radixIn :: Num α => Decimal -> α # isDigitIn :: Decimal -> Char -> Bool # isNzDigitIn :: Decimal -> Char -> Bool # fromDigitIn :: Num α => Decimal -> Char -> Maybe α # fromNzDigitIn :: Num α => Decimal -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Decimal -> Char -> α # intToDigitIn :: Decimal -> Int -> Char # printDigitIn :: Printer p => Decimal -> Char -> p # printZeroIn :: Printer p => Decimal -> p #
type Rep Decimal # |
type Rep Decimal = D1 (MetaData "Decimal" "Text.Printer.Integral" "text-printer-0.5-AxgFIDpy8hMHcgHGWuxGGe" False) (C1 (MetaCons "Decimal" PrefixI False) U1)

data Hexadecimal #

The hexadecimal numeral system.

Constructors

Hexadecimal |

Instances

Eq Hexadecimal # |
Methods (==) :: Hexadecimal -> Hexadecimal -> Bool # (/=) :: Hexadecimal -> Hexadecimal -> Bool #
Ord Hexadecimal # |
Methods compare :: Hexadecimal -> Hexadecimal -> Ordering # (<) :: Hexadecimal -> Hexadecimal -> Bool # (<=) :: Hexadecimal -> Hexadecimal -> Bool # (>) :: Hexadecimal -> Hexadecimal -> Bool # (>=) :: Hexadecimal -> Hexadecimal -> Bool # max :: Hexadecimal -> Hexadecimal -> Hexadecimal # min :: Hexadecimal -> Hexadecimal -> Hexadecimal #
Read Hexadecimal # |
Methods readsPrec :: Int -> ReadS Hexadecimal # readList :: ReadS [Hexadecimal] # readPrec :: ReadPrec Hexadecimal # readListPrec :: ReadPrec [Hexadecimal] #
Show Hexadecimal # |
Methods showsPrec :: Int -> Hexadecimal -> ShowS # show :: Hexadecimal -> String # showList :: [Hexadecimal] -> ShowS #
Generic Hexadecimal # |
Associated Types type Rep Hexadecimal :: * -> * # Methods from :: Hexadecimal -> Rep Hexadecimal x # to :: Rep Hexadecimal x -> Hexadecimal #
BitSystem Hexadecimal # |
Methods digitBitsIn :: Hexadecimal -> Int # digitMaskIn :: Num α => Hexadecimal -> α # lastDigitIn :: Bits α => Hexadecimal -> α -> Int #
PositionalSystem Hexadecimal # |
Methods systemName :: Hexadecimal -> String # radixIn :: Num α => Hexadecimal -> α # isDigitIn :: Hexadecimal -> Char -> Bool # isNzDigitIn :: Hexadecimal -> Char -> Bool # fromDigitIn :: Num α => Hexadecimal -> Char -> Maybe α # fromNzDigitIn :: Num α => Hexadecimal -> Char -> Maybe α # unsafeFromDigitIn :: Num α => Hexadecimal -> Char -> α # intToDigitIn :: Hexadecimal -> Int -> Char # printDigitIn :: Printer p => Hexadecimal -> Char -> p # printZeroIn :: Printer p => Hexadecimal -> p #
type Rep Hexadecimal # |
type Rep Hexadecimal = D1 (MetaData "Hexadecimal" "Text.Printer.Integral" "text-printer-0.5-AxgFIDpy8hMHcgHGWuxGGe" False) (C1 (MetaCons "Hexadecimal" PrefixI False) U1)

data LowHex #

The hexadecimal numeral system, using lower case digits.

Constructors

LowHex |

Instances

Eq LowHex # |
Methods (==) :: LowHex -> LowHex -> Bool # (/=) :: LowHex -> LowHex -> Bool #
Ord LowHex # |
Methods compare :: LowHex -> LowHex -> Ordering # (<) :: LowHex -> LowHex -> Bool # (<=) :: LowHex -> LowHex -> Bool # (>) :: LowHex -> LowHex -> Bool # (>=) :: LowHex -> LowHex -> Bool # max :: LowHex -> LowHex -> LowHex # min :: LowHex -> LowHex -> LowHex #
Read LowHex # |
Methods readsPrec :: Int -> ReadS LowHex # readList :: ReadS [LowHex] # readPrec :: ReadPrec LowHex # readListPrec :: ReadPrec [LowHex] #
Show LowHex # |
Methods showsPrec :: Int -> LowHex -> ShowS # show :: LowHex -> String # showList :: [LowHex] -> ShowS #
Generic LowHex # |
Associated Types type Rep LowHex :: * -> * # Methods from :: LowHex -> Rep LowHex x # to :: Rep LowHex x -> LowHex #
BitSystem LowHex # |
Methods digitBitsIn :: LowHex -> Int # digitMaskIn :: Num α => LowHex -> α # lastDigitIn :: Bits α => LowHex -> α -> Int #
PositionalSystem LowHex # |
Methods systemName :: LowHex -> String # radixIn :: Num α => LowHex -> α # isDigitIn :: LowHex -> Char -> Bool # isNzDigitIn :: LowHex -> Char -> Bool # fromDigitIn :: Num α => LowHex -> Char -> Maybe α # fromNzDigitIn :: Num α => LowHex -> Char -> Maybe α # unsafeFromDigitIn :: Num α => LowHex -> Char -> α # intToDigitIn :: LowHex -> Int -> Char # printDigitIn :: Printer p => LowHex -> Char -> p # printZeroIn :: Printer p => LowHex -> p #
type Rep LowHex # |
type Rep LowHex = D1 (MetaData "LowHex" "Text.Printer.Integral" "text-printer-0.5-AxgFIDpy8hMHcgHGWuxGGe" False) (C1 (MetaCons "LowHex" PrefixI False) U1)

data UpHex #

The hexadecimal numeral system, using upper case digits.

Constructors

UpHex |

Instances

Eq UpHex # |
Methods (==) :: UpHex -> UpHex -> Bool # (/=) :: UpHex -> UpHex -> Bool #
Ord UpHex # |
Methods compare :: UpHex -> UpHex -> Ordering # (<) :: UpHex -> UpHex -> Bool # (<=) :: UpHex -> UpHex -> Bool # (>) :: UpHex -> UpHex -> Bool # (>=) :: UpHex -> UpHex -> Bool # max :: UpHex -> UpHex -> UpHex # min :: UpHex -> UpHex -> UpHex #
Read UpHex # |
Methods readsPrec :: Int -> ReadS UpHex # readList :: ReadS [UpHex] # readPrec :: ReadPrec UpHex # readListPrec :: ReadPrec [UpHex] #
Show UpHex # |
Methods showsPrec :: Int -> UpHex -> ShowS # show :: UpHex -> String # showList :: [UpHex] -> ShowS #
Generic UpHex # |
Associated Types type Rep UpHex :: * -> * # Methods from :: UpHex -> Rep UpHex x # to :: Rep UpHex x -> UpHex #
BitSystem UpHex # |
Methods digitBitsIn :: UpHex -> Int # digitMaskIn :: Num α => UpHex -> α # lastDigitIn :: Bits α => UpHex -> α -> Int #
PositionalSystem UpHex # |
Methods systemName :: UpHex -> String # radixIn :: Num α => UpHex -> α # isDigitIn :: UpHex -> Char -> Bool # isNzDigitIn :: UpHex -> Char -> Bool # fromDigitIn :: Num α => UpHex -> Char -> Maybe α # fromNzDigitIn :: Num α => UpHex -> Char -> Maybe α # unsafeFromDigitIn :: Num α => UpHex -> Char -> α # intToDigitIn :: UpHex -> Int -> Char # printDigitIn :: Printer p => UpHex -> Char -> p # printZeroIn :: Printer p => UpHex -> p #
type Rep UpHex # |
type Rep UpHex = D1 (MetaData "UpHex" "Text.Printer.Integral" "text-printer-0.5-AxgFIDpy8hMHcgHGWuxGGe" False) (C1 (MetaCons "UpHex" PrefixI False) U1)

# Optionality characteristic

data Optional #

Optionality characteristic.

Constructors

Optional |
Required |

Instances

Bounded Optional # |
Methods minBound :: Optional # maxBound :: Optional #
Enum Optional # |
Methods succ :: Optional -> Optional # pred :: Optional -> Optional # toEnum :: Int -> Optional # fromEnum :: Optional -> Int # enumFrom :: Optional -> [Optional] # enumFromThen :: Optional -> Optional -> [Optional] # enumFromTo :: Optional -> Optional -> [Optional] # enumFromThenTo :: Optional -> Optional -> Optional -> [Optional] #
Eq Optional # |
Methods (==) :: Optional -> Optional -> Bool # (/=) :: Optional -> Optional -> Bool #
Ord Optional # |
Methods compare :: Optional -> Optional -> Ordering # (<) :: Optional -> Optional -> Bool # (<=) :: Optional -> Optional -> Bool # (>) :: Optional -> Optional -> Bool # (>=) :: Optional -> Optional -> Bool # max :: Optional -> Optional -> Optional # min :: Optional -> Optional -> Optional #
Read Optional # |
Methods readsPrec :: Int -> ReadS Optional # readList :: ReadS [Optional] # readPrec :: ReadPrec Optional # readListPrec :: ReadPrec [Optional] #
Show Optional # |
Methods showsPrec :: Int -> Optional -> ShowS # show :: Optional -> String # showList :: [Optional] -> ShowS #
Ix Optional # |
Methods range :: (Optional, Optional) -> [Optional] # index :: (Optional, Optional) -> Optional -> Int # unsafeIndex :: (Optional, Optional) -> Optional -> Int inRange :: (Optional, Optional) -> Optional -> Bool # rangeSize :: (Optional, Optional) -> Int # unsafeRangeSize :: (Optional, Optional) -> Int
Generic Optional # |
Associated Types type Rep Optional :: * -> * # Methods from :: Optional -> Rep Optional x # to :: Rep Optional x -> Optional #
type Rep Optional # |
type Rep Optional = D1 (MetaData "Optional" "Text.Printer.Fractional" "text-printer-0.5-AxgFIDpy8hMHcgHGWuxGGe" False) ((:+:) (C1 (MetaCons "Optional" PrefixI False) U1) (C1 (MetaCons "Required" PrefixI False) U1))

isOptional :: Optional -> Bool #

True if the supplied value is `Optional` and false otherwise.

isRequired :: Optional -> Bool #

True if the supplied value is `Required` and false otherwise.

# Fraction printers

fraction' #

Arguments

:: (PositionalSystem s, Real α, Printer p) |
=> s |
-> p | Prefix for negative values
-> p | Zero printer
-> p | Prefix for positive values
-> p | Numerator/denominator separator
-> Optional | Whether to print invisible denominators
-> α |
-> p |

Print a fraction, writing the numerator and the denominator in the specified positional numeral system.

fraction :: (Real α, Printer p) => α -> p #

Print a fraction. The numerator and the denominator are written in the decimal numeral system and separated by a slash. Negative values are prefixed with a minus sign. Invisible denominators are omitted.