    {-# LANGUAGE GeneralizedNewtypeDeriving #-}

    -- |
    -- Module      : Data.Text.Format.Types.Internal
    -- Copyright   : (c) 2011 MailRank, Inc.
    --
    -- License     : BSD-style
    -- Maintainer  : bos@serpentine.com
    -- Stability   : experimental
    -- Portability : GHC
    --
    -- Types for text mangling.

    module Data.Text.Format.Types
        ( Shown(..)
        -- * Integer format control
        , Hex(..)
        ) where

    -- | Render an integral type in hexadecimal.
    newtype Hex a = Hex a
        deriving (Hex a -> Hex a -> Bool
    (Hex a -> Hex a -> Bool) -> (Hex a -> Hex a -> Bool) -> Eq (Hex a)
    forall a. Eq a => Hex a -> Hex a -> Bool
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: forall a. Eq a => Hex a -> Hex a -> Bool
    == :: Hex a -> Hex a -> Bool
    $c/= :: forall a. Eq a => Hex a -> Hex a -> Bool
    /= :: Hex a -> Hex a -> Bool
    Eq, Eq (Hex a)
    Eq (Hex a) =>
    (Hex a -> Hex a -> Ordering)
    -> (Hex a -> Hex a -> Bool)
    -> (Hex a -> Hex a -> Bool)
    -> (Hex a -> Hex a -> Bool)
    -> (Hex a -> Hex a -> Bool)
    -> (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a -> Hex a)
    -> Ord (Hex a)
    Hex a -> Hex a -> Bool
    Hex a -> Hex a -> Ordering
    Hex a -> Hex a -> Hex a
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    forall a. Ord a => Eq (Hex a)
    forall a. Ord a => Hex a -> Hex a -> Bool
    forall a. Ord a => Hex a -> Hex a -> Ordering
    forall a. Ord a => Hex a -> Hex a -> Hex a
    $ccompare :: forall a. Ord a => Hex a -> Hex a -> Ordering
    compare :: Hex a -> Hex a -> Ordering
    $c< :: forall a. Ord a => Hex a -> Hex a -> Bool
    < :: Hex a -> Hex a -> Bool
    $c<= :: forall a. Ord a => Hex a -> Hex a -> Bool
    <= :: Hex a -> Hex a -> Bool
    $c> :: forall a. Ord a => Hex a -> Hex a -> Bool
    > :: Hex a -> Hex a -> Bool
    $c>= :: forall a. Ord a => Hex a -> Hex a -> Bool
    >= :: Hex a -> Hex a -> Bool
    $cmax :: forall a. Ord a => Hex a -> Hex a -> Hex a
    max :: Hex a -> Hex a -> Hex a
    $cmin :: forall a. Ord a => Hex a -> Hex a -> Hex a
    min :: Hex a -> Hex a -> Hex a
    Ord, ReadPrec [Hex a]
    ReadPrec (Hex a)
    Int -> ReadS (Hex a)
    ReadS [Hex a]
    (Int -> ReadS (Hex a))
    -> ReadS [Hex a]
    -> ReadPrec (Hex a)
    -> ReadPrec [Hex a]
    -> Read (Hex a)
    forall a. Read a => ReadPrec [Hex a]
    forall a. Read a => ReadPrec (Hex a)
    forall a. Read a => Int -> ReadS (Hex a)
    forall a. Read a => ReadS [Hex a]
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: forall a. Read a => Int -> ReadS (Hex a)
    readsPrec :: Int -> ReadS (Hex a)
    $creadList :: forall a. Read a => ReadS [Hex a]
    readList :: ReadS [Hex a]
    $creadPrec :: forall a. Read a => ReadPrec (Hex a)
    readPrec :: ReadPrec (Hex a)
    $creadListPrec :: forall a. Read a => ReadPrec [Hex a]
    readListPrec :: ReadPrec [Hex a]
    Read, Int -> Hex a -> ShowS
    [Hex a] -> ShowS
    Hex a -> String
    (Int -> Hex a -> ShowS)
    -> (Hex a -> String) -> ([Hex a] -> ShowS) -> Show (Hex a)
    forall a. Show a => Int -> Hex a -> ShowS
    forall a. Show a => [Hex a] -> ShowS
    forall a. Show a => Hex a -> String
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: forall a. Show a => Int -> Hex a -> ShowS
    showsPrec :: Int -> Hex a -> ShowS
    $cshow :: forall a. Show a => Hex a -> String
    show :: Hex a -> String
    $cshowList :: forall a. Show a => [Hex a] -> ShowS
    showList :: [Hex a] -> ShowS
    Show, Integer -> Hex a
    Hex a -> Hex a
    Hex a -> Hex a -> Hex a
    (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a)
    -> (Hex a -> Hex a)
    -> (Hex a -> Hex a)
    -> (Integer -> Hex a)
    -> Num (Hex a)
    forall a. Num a => Integer -> Hex a
    forall a. Num a => Hex a -> Hex a
    forall a. Num a => Hex a -> Hex a -> Hex a
    forall a.
    (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (Integer -> a)
    -> Num a
    $c+ :: forall a. Num a => Hex a -> Hex a -> Hex a
    + :: Hex a -> Hex a -> Hex a
    $c- :: forall a. Num a => Hex a -> Hex a -> Hex a
    - :: Hex a -> Hex a -> Hex a
    $c* :: forall a. Num a => Hex a -> Hex a -> Hex a
    * :: Hex a -> Hex a -> Hex a
    $cnegate :: forall a. Num a => Hex a -> Hex a
    negate :: Hex a -> Hex a
    $cabs :: forall a. Num a => Hex a -> Hex a
    abs :: Hex a -> Hex a
    $csignum :: forall a. Num a => Hex a -> Hex a
    signum :: Hex a -> Hex a
    $cfromInteger :: forall a. Num a => Integer -> Hex a
    fromInteger :: Integer -> Hex a
    Num, Num (Hex a)
    Ord (Hex a)
    (Num (Hex a), Ord (Hex a)) => (Hex a -> Rational) -> Real (Hex a)
    Hex a -> Rational
    forall a. (Num a, Ord a) => (a -> Rational) -> Real a
    forall a. Real a => Num (Hex a)
    forall a. Real a => Ord (Hex a)
    forall a. Real a => Hex a -> Rational
    $ctoRational :: forall a. Real a => Hex a -> Rational
    toRational :: Hex a -> Rational
    Real, Int -> Hex a
    Hex a -> Int
    Hex a -> [Hex a]
    Hex a -> Hex a
    Hex a -> Hex a -> [Hex a]
    Hex a -> Hex a -> Hex a -> [Hex a]
    (Hex a -> Hex a)
    -> (Hex a -> Hex a)
    -> (Int -> Hex a)
    -> (Hex a -> Int)
    -> (Hex a -> [Hex a])
    -> (Hex a -> Hex a -> [Hex a])
    -> (Hex a -> Hex a -> [Hex a])
    -> (Hex a -> Hex a -> Hex a -> [Hex a])
    -> Enum (Hex a)
    forall a. Enum a => Int -> Hex a
    forall a. Enum a => Hex a -> Int
    forall a. Enum a => Hex a -> [Hex a]
    forall a. Enum a => Hex a -> Hex a
    forall a. Enum a => Hex a -> Hex a -> [Hex a]
    forall a. Enum a => Hex a -> Hex a -> Hex a -> [Hex a]
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: forall a. Enum a => Hex a -> Hex a
    succ :: Hex a -> Hex a
    $cpred :: forall a. Enum a => Hex a -> Hex a
    pred :: Hex a -> Hex a
    $ctoEnum :: forall a. Enum a => Int -> Hex a
    toEnum :: Int -> Hex a
    $cfromEnum :: forall a. Enum a => Hex a -> Int
    fromEnum :: Hex a -> Int
    $cenumFrom :: forall a. Enum a => Hex a -> [Hex a]
    enumFrom :: Hex a -> [Hex a]
    $cenumFromThen :: forall a. Enum a => Hex a -> Hex a -> [Hex a]
    enumFromThen :: Hex a -> Hex a -> [Hex a]
    $cenumFromTo :: forall a. Enum a => Hex a -> Hex a -> [Hex a]
    enumFromTo :: Hex a -> Hex a -> [Hex a]
    $cenumFromThenTo :: forall a. Enum a => Hex a -> Hex a -> Hex a -> [Hex a]
    enumFromThenTo :: Hex a -> Hex a -> Hex a -> [Hex a]
    Enum, Enum (Hex a)
    Real (Hex a)
    (Real (Hex a), Enum (Hex a)) =>
    (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a -> Hex a)
    -> (Hex a -> Hex a -> (Hex a, Hex a))
    -> (Hex a -> Hex a -> (Hex a, Hex a))
    -> (Hex a -> Integer)
    -> Integral (Hex a)
    Hex a -> Integer
    Hex a -> Hex a -> (Hex a, Hex a)
    Hex a -> Hex a -> Hex a
    forall a. Integral a => Enum (Hex a)
    forall a. Integral a => Real (Hex a)
    forall a. Integral a => Hex a -> Integer
    forall a. Integral a => Hex a -> Hex a -> (Hex a, Hex a)
    forall a. Integral a => Hex a -> Hex a -> Hex a
    forall a.
    (Real a, Enum a) =>
    (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> (a, a))
    -> (a -> a -> (a, a))
    -> (a -> Integer)
    -> Integral a
    $cquot :: forall a. Integral a => Hex a -> Hex a -> Hex a
    quot :: Hex a -> Hex a -> Hex a
    $crem :: forall a. Integral a => Hex a -> Hex a -> Hex a
    rem :: Hex a -> Hex a -> Hex a
    $cdiv :: forall a. Integral a => Hex a -> Hex a -> Hex a
    div :: Hex a -> Hex a -> Hex a
    $cmod :: forall a. Integral a => Hex a -> Hex a -> Hex a
    mod :: Hex a -> Hex a -> Hex a
    $cquotRem :: forall a. Integral a => Hex a -> Hex a -> (Hex a, Hex a)
    quotRem :: Hex a -> Hex a -> (Hex a, Hex a)
    $cdivMod :: forall a. Integral a => Hex a -> Hex a -> (Hex a, Hex a)
    divMod :: Hex a -> Hex a -> (Hex a, Hex a)
    $ctoInteger :: forall a. Integral a => Hex a -> Integer
    toInteger :: Hex a -> Integer
    Integral)

    -- | Render a value using its 'Show' instance.
    newtype Shown a = Shown {
          forall a. Shown a -> a
    shown :: a
        } deriving (Shown a -> Shown a -> Bool
    (Shown a -> Shown a -> Bool)
    -> (Shown a -> Shown a -> Bool) -> Eq (Shown a)
    forall a. Eq a => Shown a -> Shown a -> Bool
    forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
    $c== :: forall a. Eq a => Shown a -> Shown a -> Bool
    == :: Shown a -> Shown a -> Bool
    $c/= :: forall a. Eq a => Shown a -> Shown a -> Bool
    /= :: Shown a -> Shown a -> Bool
    Eq, Int -> Shown a -> ShowS
    [Shown a] -> ShowS
    Shown a -> String
    (Int -> Shown a -> ShowS)
    -> (Shown a -> String) -> ([Shown a] -> ShowS) -> Show (Shown a)
    forall a. Show a => Int -> Shown a -> ShowS
    forall a. Show a => [Shown a] -> ShowS
    forall a. Show a => Shown a -> String
    forall a.
    (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
    $cshowsPrec :: forall a. Show a => Int -> Shown a -> ShowS
    showsPrec :: Int -> Shown a -> ShowS
    $cshow :: forall a. Show a => Shown a -> String
    show :: Shown a -> String
    $cshowList :: forall a. Show a => [Shown a] -> ShowS
    showList :: [Shown a] -> ShowS
    Show, ReadPrec [Shown a]
    ReadPrec (Shown a)
    Int -> ReadS (Shown a)
    ReadS [Shown a]
    (Int -> ReadS (Shown a))
    -> ReadS [Shown a]
    -> ReadPrec (Shown a)
    -> ReadPrec [Shown a]
    -> Read (Shown a)
    forall a. Read a => ReadPrec [Shown a]
    forall a. Read a => ReadPrec (Shown a)
    forall a. Read a => Int -> ReadS (Shown a)
    forall a. Read a => ReadS [Shown a]
    forall a.
    (Int -> ReadS a)
    -> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
    $creadsPrec :: forall a. Read a => Int -> ReadS (Shown a)
    readsPrec :: Int -> ReadS (Shown a)
    $creadList :: forall a. Read a => ReadS [Shown a]
    readList :: ReadS [Shown a]
    $creadPrec :: forall a. Read a => ReadPrec (Shown a)
    readPrec :: ReadPrec (Shown a)
    $creadListPrec :: forall a. Read a => ReadPrec [Shown a]
    readListPrec :: ReadPrec [Shown a]
    Read, Eq (Shown a)
    Eq (Shown a) =>
    (Shown a -> Shown a -> Ordering)
    -> (Shown a -> Shown a -> Bool)
    -> (Shown a -> Shown a -> Bool)
    -> (Shown a -> Shown a -> Bool)
    -> (Shown a -> Shown a -> Bool)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> Ord (Shown a)
    Shown a -> Shown a -> Bool
    Shown a -> Shown a -> Ordering
    Shown a -> Shown a -> Shown a
    forall a.
    Eq a =>
    (a -> a -> Ordering)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> Bool)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> Ord a
    forall a. Ord a => Eq (Shown a)
    forall a. Ord a => Shown a -> Shown a -> Bool
    forall a. Ord a => Shown a -> Shown a -> Ordering
    forall a. Ord a => Shown a -> Shown a -> Shown a
    $ccompare :: forall a. Ord a => Shown a -> Shown a -> Ordering
    compare :: Shown a -> Shown a -> Ordering
    $c< :: forall a. Ord a => Shown a -> Shown a -> Bool
    < :: Shown a -> Shown a -> Bool
    $c<= :: forall a. Ord a => Shown a -> Shown a -> Bool
    <= :: Shown a -> Shown a -> Bool
    $c> :: forall a. Ord a => Shown a -> Shown a -> Bool
    > :: Shown a -> Shown a -> Bool
    $c>= :: forall a. Ord a => Shown a -> Shown a -> Bool
    >= :: Shown a -> Shown a -> Bool
    $cmax :: forall a. Ord a => Shown a -> Shown a -> Shown a
    max :: Shown a -> Shown a -> Shown a
    $cmin :: forall a. Ord a => Shown a -> Shown a -> Shown a
    min :: Shown a -> Shown a -> Shown a
    Ord, Integer -> Shown a
    Shown a -> Shown a
    Shown a -> Shown a -> Shown a
    (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Integer -> Shown a)
    -> Num (Shown a)
    forall a. Num a => Integer -> Shown a
    forall a. Num a => Shown a -> Shown a
    forall a. Num a => Shown a -> Shown a -> Shown a
    forall a.
    (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (Integer -> a)
    -> Num a
    $c+ :: forall a. Num a => Shown a -> Shown a -> Shown a
    + :: Shown a -> Shown a -> Shown a
    $c- :: forall a. Num a => Shown a -> Shown a -> Shown a
    - :: Shown a -> Shown a -> Shown a
    $c* :: forall a. Num a => Shown a -> Shown a -> Shown a
    * :: Shown a -> Shown a -> Shown a
    $cnegate :: forall a. Num a => Shown a -> Shown a
    negate :: Shown a -> Shown a
    $cabs :: forall a. Num a => Shown a -> Shown a
    abs :: Shown a -> Shown a
    $csignum :: forall a. Num a => Shown a -> Shown a
    signum :: Shown a -> Shown a
    $cfromInteger :: forall a. Num a => Integer -> Shown a
    fromInteger :: Integer -> Shown a
    Num, Num (Shown a)
    Num (Shown a) =>
    (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Rational -> Shown a)
    -> Fractional (Shown a)
    Rational -> Shown a
    Shown a -> Shown a
    Shown a -> Shown a -> Shown a
    forall a. Fractional a => Num (Shown a)
    forall a. Fractional a => Rational -> Shown a
    forall a. Fractional a => Shown a -> Shown a
    forall a. Fractional a => Shown a -> Shown a -> Shown a
    forall a.
    Num a =>
    (a -> a -> a) -> (a -> a) -> (Rational -> a) -> Fractional a
    $c/ :: forall a. Fractional a => Shown a -> Shown a -> Shown a
    / :: Shown a -> Shown a -> Shown a
    $crecip :: forall a. Fractional a => Shown a -> Shown a
    recip :: Shown a -> Shown a
    $cfromRational :: forall a. Fractional a => Rational -> Shown a
    fromRational :: Rational -> Shown a
    Fractional, Num (Shown a)
    Ord (Shown a)
    (Num (Shown a), Ord (Shown a)) =>
    (Shown a -> Rational) -> Real (Shown a)
    Shown a -> Rational
    forall a. (Num a, Ord a) => (a -> Rational) -> Real a
    forall a. Real a => Num (Shown a)
    forall a. Real a => Ord (Shown a)
    forall a. Real a => Shown a -> Rational
    $ctoRational :: forall a. Real a => Shown a -> Rational
    toRational :: Shown a -> Rational
    Real, Fractional (Shown a)
    Real (Shown a)
    (Real (Shown a), Fractional (Shown a)) =>
    (forall b. Integral b => Shown a -> (b, Shown a))
    -> (forall b. Integral b => Shown a -> b)
    -> (forall b. Integral b => Shown a -> b)
    -> (forall b. Integral b => Shown a -> b)
    -> (forall b. Integral b => Shown a -> b)
    -> RealFrac (Shown a)
    forall b. Integral b => Shown a -> b
    forall b. Integral b => Shown a -> (b, Shown a)
    forall a.
    (Real a, Fractional a) =>
    (forall b. Integral b => a -> (b, a))
    -> (forall b. Integral b => a -> b)
    -> (forall b. Integral b => a -> b)
    -> (forall b. Integral b => a -> b)
    -> (forall b. Integral b => a -> b)
    -> RealFrac a
    forall a. RealFrac a => Fractional (Shown a)
    forall a. RealFrac a => Real (Shown a)
    forall a b. (RealFrac a, Integral b) => Shown a -> b
    forall a b. (RealFrac a, Integral b) => Shown a -> (b, Shown a)
    $cproperFraction :: forall a b. (RealFrac a, Integral b) => Shown a -> (b, Shown a)
    properFraction :: forall b. Integral b => Shown a -> (b, Shown a)
    $ctruncate :: forall a b. (RealFrac a, Integral b) => Shown a -> b
    truncate :: forall b. Integral b => Shown a -> b
    $cround :: forall a b. (RealFrac a, Integral b) => Shown a -> b
    round :: forall b. Integral b => Shown a -> b
    $cceiling :: forall a b. (RealFrac a, Integral b) => Shown a -> b
    ceiling :: forall b. Integral b => Shown a -> b
    $cfloor :: forall a b. (RealFrac a, Integral b) => Shown a -> b
    floor :: forall b. Integral b => Shown a -> b
    RealFrac,
                    Fractional (Shown a)
    Shown a
    Fractional (Shown a) =>
    Shown a
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> Floating (Shown a)
    Shown a -> Shown a
    Shown a -> Shown a -> Shown a
    forall a. Floating a => Fractional (Shown a)
    forall a. Floating a => Shown a
    forall a. Floating a => Shown a -> Shown a
    forall a. Floating a => Shown a -> Shown a -> Shown a
    forall a.
    Fractional a =>
    a
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> (a -> a)
    -> Floating a
    $cpi :: forall a. Floating a => Shown a
    pi :: Shown a
    $cexp :: forall a. Floating a => Shown a -> Shown a
    exp :: Shown a -> Shown a
    $clog :: forall a. Floating a => Shown a -> Shown a
    log :: Shown a -> Shown a
    $csqrt :: forall a. Floating a => Shown a -> Shown a
    sqrt :: Shown a -> Shown a
    $c** :: forall a. Floating a => Shown a -> Shown a -> Shown a
    ** :: Shown a -> Shown a -> Shown a
    $clogBase :: forall a. Floating a => Shown a -> Shown a -> Shown a
    logBase :: Shown a -> Shown a -> Shown a
    $csin :: forall a. Floating a => Shown a -> Shown a
    sin :: Shown a -> Shown a
    $ccos :: forall a. Floating a => Shown a -> Shown a
    cos :: Shown a -> Shown a
    $ctan :: forall a. Floating a => Shown a -> Shown a
    tan :: Shown a -> Shown a
    $casin :: forall a. Floating a => Shown a -> Shown a
    asin :: Shown a -> Shown a
    $cacos :: forall a. Floating a => Shown a -> Shown a
    acos :: Shown a -> Shown a
    $catan :: forall a. Floating a => Shown a -> Shown a
    atan :: Shown a -> Shown a
    $csinh :: forall a. Floating a => Shown a -> Shown a
    sinh :: Shown a -> Shown a
    $ccosh :: forall a. Floating a => Shown a -> Shown a
    cosh :: Shown a -> Shown a
    $ctanh :: forall a. Floating a => Shown a -> Shown a
    tanh :: Shown a -> Shown a
    $casinh :: forall a. Floating a => Shown a -> Shown a
    asinh :: Shown a -> Shown a
    $cacosh :: forall a. Floating a => Shown a -> Shown a
    acosh :: Shown a -> Shown a
    $catanh :: forall a. Floating a => Shown a -> Shown a
    atanh :: Shown a -> Shown a
    $clog1p :: forall a. Floating a => Shown a -> Shown a
    log1p :: Shown a -> Shown a
    $cexpm1 :: forall a. Floating a => Shown a -> Shown a
    expm1 :: Shown a -> Shown a
    $clog1pexp :: forall a. Floating a => Shown a -> Shown a
    log1pexp :: Shown a -> Shown a
    $clog1mexp :: forall a. Floating a => Shown a -> Shown a
    log1mexp :: Shown a -> Shown a
    Floating, Floating (Shown a)
    RealFrac (Shown a)
    (RealFrac (Shown a), Floating (Shown a)) =>
    (Shown a -> Integer)
    -> (Shown a -> Int)
    -> (Shown a -> (Int, Int))
    -> (Shown a -> (Integer, Int))
    -> (Integer -> Int -> Shown a)
    -> (Shown a -> Int)
    -> (Shown a -> Shown a)
    -> (Int -> Shown a -> Shown a)
    -> (Shown a -> Bool)
    -> (Shown a -> Bool)
    -> (Shown a -> Bool)
    -> (Shown a -> Bool)
    -> (Shown a -> Bool)
    -> (Shown a -> Shown a -> Shown a)
    -> RealFloat (Shown a)
    Int -> Shown a -> Shown a
    Integer -> Int -> Shown a
    Shown a -> Bool
    Shown a -> Int
    Shown a -> Integer
    Shown a -> (Int, Int)
    Shown a -> (Integer, Int)
    Shown a -> Shown a
    Shown a -> Shown a -> Shown a
    forall a. RealFloat a => Floating (Shown a)
    forall a. RealFloat a => RealFrac (Shown a)
    forall a. RealFloat a => Int -> Shown a -> Shown a
    forall a. RealFloat a => Integer -> Int -> Shown a
    forall a. RealFloat a => Shown a -> Bool
    forall a. RealFloat a => Shown a -> Int
    forall a. RealFloat a => Shown a -> Integer
    forall a. RealFloat a => Shown a -> (Int, Int)
    forall a. RealFloat a => Shown a -> (Integer, Int)
    forall a. RealFloat a => Shown a -> Shown a
    forall a. RealFloat a => Shown a -> Shown a -> Shown a
    forall a.
    (RealFrac a, Floating a) =>
    (a -> Integer)
    -> (a -> Int)
    -> (a -> (Int, Int))
    -> (a -> (Integer, Int))
    -> (Integer -> Int -> a)
    -> (a -> Int)
    -> (a -> a)
    -> (Int -> a -> a)
    -> (a -> Bool)
    -> (a -> Bool)
    -> (a -> Bool)
    -> (a -> Bool)
    -> (a -> Bool)
    -> (a -> a -> a)
    -> RealFloat a
    $cfloatRadix :: forall a. RealFloat a => Shown a -> Integer
    floatRadix :: Shown a -> Integer
    $cfloatDigits :: forall a. RealFloat a => Shown a -> Int
    floatDigits :: Shown a -> Int
    $cfloatRange :: forall a. RealFloat a => Shown a -> (Int, Int)
    floatRange :: Shown a -> (Int, Int)
    $cdecodeFloat :: forall a. RealFloat a => Shown a -> (Integer, Int)
    decodeFloat :: Shown a -> (Integer, Int)
    $cencodeFloat :: forall a. RealFloat a => Integer -> Int -> Shown a
    encodeFloat :: Integer -> Int -> Shown a
    $cexponent :: forall a. RealFloat a => Shown a -> Int
    exponent :: Shown a -> Int
    $csignificand :: forall a. RealFloat a => Shown a -> Shown a
    significand :: Shown a -> Shown a
    $cscaleFloat :: forall a. RealFloat a => Int -> Shown a -> Shown a
    scaleFloat :: Int -> Shown a -> Shown a
    $cisNaN :: forall a. RealFloat a => Shown a -> Bool
    isNaN :: Shown a -> Bool
    $cisInfinite :: forall a. RealFloat a => Shown a -> Bool
    isInfinite :: Shown a -> Bool
    $cisDenormalized :: forall a. RealFloat a => Shown a -> Bool
    isDenormalized :: Shown a -> Bool
    $cisNegativeZero :: forall a. RealFloat a => Shown a -> Bool
    isNegativeZero :: Shown a -> Bool
    $cisIEEE :: forall a. RealFloat a => Shown a -> Bool
    isIEEE :: Shown a -> Bool
    $catan2 :: forall a. RealFloat a => Shown a -> Shown a -> Shown a
    atan2 :: Shown a -> Shown a -> Shown a
    RealFloat, Int -> Shown a
    Shown a -> Int
    Shown a -> [Shown a]
    Shown a -> Shown a
    Shown a -> Shown a -> [Shown a]
    Shown a -> Shown a -> Shown a -> [Shown a]
    (Shown a -> Shown a)
    -> (Shown a -> Shown a)
    -> (Int -> Shown a)
    -> (Shown a -> Int)
    -> (Shown a -> [Shown a])
    -> (Shown a -> Shown a -> [Shown a])
    -> (Shown a -> Shown a -> [Shown a])
    -> (Shown a -> Shown a -> Shown a -> [Shown a])
    -> Enum (Shown a)
    forall a. Enum a => Int -> Shown a
    forall a. Enum a => Shown a -> Int
    forall a. Enum a => Shown a -> [Shown a]
    forall a. Enum a => Shown a -> Shown a
    forall a. Enum a => Shown a -> Shown a -> [Shown a]
    forall a. Enum a => Shown a -> Shown a -> Shown a -> [Shown a]
    forall a.
    (a -> a)
    -> (a -> a)
    -> (Int -> a)
    -> (a -> Int)
    -> (a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> [a])
    -> (a -> a -> a -> [a])
    -> Enum a
    $csucc :: forall a. Enum a => Shown a -> Shown a
    succ :: Shown a -> Shown a
    $cpred :: forall a. Enum a => Shown a -> Shown a
    pred :: Shown a -> Shown a
    $ctoEnum :: forall a. Enum a => Int -> Shown a
    toEnum :: Int -> Shown a
    $cfromEnum :: forall a. Enum a => Shown a -> Int
    fromEnum :: Shown a -> Int
    $cenumFrom :: forall a. Enum a => Shown a -> [Shown a]
    enumFrom :: Shown a -> [Shown a]
    $cenumFromThen :: forall a. Enum a => Shown a -> Shown a -> [Shown a]
    enumFromThen :: Shown a -> Shown a -> [Shown a]
    $cenumFromTo :: forall a. Enum a => Shown a -> Shown a -> [Shown a]
    enumFromTo :: Shown a -> Shown a -> [Shown a]
    $cenumFromThenTo :: forall a. Enum a => Shown a -> Shown a -> Shown a -> [Shown a]
    enumFromThenTo :: Shown a -> Shown a -> Shown a -> [Shown a]
    Enum, Enum (Shown a)
    Real (Shown a)
    (Real (Shown a), Enum (Shown a)) =>
    (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> Shown a)
    -> (Shown a -> Shown a -> (Shown a, Shown a))
    -> (Shown a -> Shown a -> (Shown a, Shown a))
    -> (Shown a -> Integer)
    -> Integral (Shown a)
    Shown a -> Integer
    Shown a -> Shown a -> (Shown a, Shown a)
    Shown a -> Shown a -> Shown a
    forall a. Integral a => Enum (Shown a)
    forall a. Integral a => Real (Shown a)
    forall a. Integral a => Shown a -> Integer
    forall a. Integral a => Shown a -> Shown a -> (Shown a, Shown a)
    forall a. Integral a => Shown a -> Shown a -> Shown a
    forall a.
    (Real a, Enum a) =>
    (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> a)
    -> (a -> a -> (a, a))
    -> (a -> a -> (a, a))
    -> (a -> Integer)
    -> Integral a
    $cquot :: forall a. Integral a => Shown a -> Shown a -> Shown a
    quot :: Shown a -> Shown a -> Shown a
    $crem :: forall a. Integral a => Shown a -> Shown a -> Shown a
    rem :: Shown a -> Shown a -> Shown a
    $cdiv :: forall a. Integral a => Shown a -> Shown a -> Shown a
    div :: Shown a -> Shown a -> Shown a
    $cmod :: forall a. Integral a => Shown a -> Shown a -> Shown a
    mod :: Shown a -> Shown a -> Shown a
    $cquotRem :: forall a. Integral a => Shown a -> Shown a -> (Shown a, Shown a)
    quotRem :: Shown a -> Shown a -> (Shown a, Shown a)
    $cdivMod :: forall a. Integral a => Shown a -> Shown a -> (Shown a, Shown a)
    divMod :: Shown a -> Shown a -> (Shown a, Shown a)
    $ctoInteger :: forall a. Integral a => Shown a -> Integer
    toInteger :: Shown a -> Integer
    Integral, Shown a
    Shown a -> Shown a -> Bounded (Shown a)
    forall a. a -> a -> Bounded a
    forall a. Bounded a => Shown a
    $cminBound :: forall a. Bounded a => Shown a
    minBound :: Shown a
    $cmaxBound :: forall a. Bounded a => Shown a
    maxBound :: Shown a
    Bounded)