(original) (raw)
{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE Trustworthy #-}
module Data.Functor.Const (Const(..)) where
import Data.Bits (Bits, FiniteBits) import Data.Foldable (Foldable(foldMap)) import Foreign.Storable (Storable)
import GHC.Ix (Ix) import GHC.Base import GHC.Enum (Bounded, Enum) import GHC.Float (Floating, RealFloat) import GHC.Generics (Generic, Generic1) import GHC.Num (Num) import GHC.Real (Fractional, Integral, Real, RealFrac) import GHC.Read (Read(readsPrec), readParen, lex) import GHC.Show (Show(showsPrec), showParen, showString)
newtype Const a b = Const { forall {k} a (b :: k). Const a b -> a
getConst :: a }
deriving ( Eq (Const a b)
Const a b
Eq (Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> Const a b
-> (Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Bool)
-> (Const a b -> Maybe Int)
-> (Const a b -> Int)
-> (Const a b -> Bool)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int -> Const a b)
-> (Const a b -> Int)
-> Bits (Const a b)
Int -> Const a b
Const a b -> Bool
Const a b -> Int
Const a b -> Maybe Int
Const a b -> Const a b
Const a b -> Int -> Bool
Const a b -> Int -> Const a b
Const a b -> Const a b -> Const a b
forall a.
Eq a
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
forall {a} {k} {b :: k}. Bits a => Eq (Const a b)
forall a k (b :: k). Bits a => Const a b
forall a k (b :: k). Bits a => Int -> Const a b
forall a k (b :: k). Bits a => Const a b -> Bool
forall a k (b :: k). Bits a => Const a b -> Int
forall a k (b :: k). Bits a => Const a b -> Maybe Int
forall a k (b :: k). Bits a => Const a b -> Const a b
forall a k (b :: k). Bits a => Const a b -> Int -> Bool
forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
forall a k (b :: k). Bits a => Const a b -> Const a b -> Const a b
popCount :: Const a b -> Int
$cpopCount :: forall a k (b :: k). Bits a => Const a b -> Int
rotateR :: Const a b -> Int -> Const a b
$crotateR :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
rotateL :: Const a b -> Int -> Const a b
$crotateL :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
unsafeShiftR :: Const a b -> Int -> Const a b
$cunsafeShiftR :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
shiftR :: Const a b -> Int -> Const a b
$cshiftR :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
unsafeShiftL :: Const a b -> Int -> Const a b
$cunsafeShiftL :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
shiftL :: Const a b -> Int -> Const a b
$cshiftL :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
isSigned :: Const a b -> Bool
$cisSigned :: forall a k (b :: k). Bits a => Const a b -> Bool
bitSize :: Const a b -> Int
$cbitSize :: forall a k (b :: k). Bits a => Const a b -> Int
bitSizeMaybe :: Const a b -> Maybe Int
$cbitSizeMaybe :: forall a k (b :: k). Bits a => Const a b -> Maybe Int
testBit :: Const a b -> Int -> Bool
$ctestBit :: forall a k (b :: k). Bits a => Const a b -> Int -> Bool
complementBit :: Const a b -> Int -> Const a b
$ccomplementBit :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
clearBit :: Const a b -> Int -> Const a b
$cclearBit :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
setBit :: Const a b -> Int -> Const a b
$csetBit :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
bit :: Int -> Const a b
$cbit :: forall a k (b :: k). Bits a => Int -> Const a b
zeroBits :: Const a b
$czeroBits :: forall a k (b :: k). Bits a => Const a b
rotate :: Const a b -> Int -> Const a b
$crotate :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
shift :: Const a b -> Int -> Const a b
$cshift :: forall a k (b :: k). Bits a => Const a b -> Int -> Const a b
complement :: Const a b -> Const a b
$ccomplement :: forall a k (b :: k). Bits a => Const a b -> Const a b
xor :: Const a b -> Const a b -> Const a b
$cxor :: forall a k (b :: k). Bits a => Const a b -> Const a b -> Const a b
.|. :: Const a b -> Const a b -> Const a b
$c.|. :: forall a k (b :: k). Bits a => Const a b -> Const a b -> Const a b
.&. :: Const a b -> Const a b -> Const a b
$c.&. :: forall a k (b :: k). Bits a => Const a b -> Const a b -> Const a b
Bits
, Const a b
Const a b -> Const a b -> Bounded (Const a b)
forall a. a -> a -> Bounded a
forall a k (b :: k). Bounded a => Const a b
maxBound :: Const a b
$cmaxBound :: forall a k (b :: k). Bounded a => Const a b
minBound :: Const a b
$cminBound :: forall a k (b :: k). Bounded a => Const a b
Bounded
, Int -> Const a b
Const a b -> Int
Const a b -> [Const a b]
Const a b -> Const a b
Const a b -> Const a b -> [Const a b]
Const a b -> Const a b -> Const a b -> [Const a b]
(Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Int -> Const a b)
-> (Const a b -> Int)
-> (Const a b -> [Const a b])
-> (Const a b -> Const a b -> [Const a b])
-> (Const a b -> Const a b -> [Const a b])
-> (Const a b -> Const a b -> Const a b -> [Const a b])
-> Enum (Const a b)
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
forall a k (b :: k). Enum a => Int -> Const a b
forall a k (b :: k). Enum a => Const a b -> Int
forall a k (b :: k). Enum a => Const a b -> [Const a b]
forall a k (b :: k). Enum a => Const a b -> Const a b
forall a k (b :: k).
Enum a =>
Const a b -> Const a b -> [Const a b]
forall a k (b :: k).
Enum a =>
Const a b -> Const a b -> Const a b -> [Const a b]
enumFromThenTo :: Const a b -> Const a b -> Const a b -> [Const a b]
$cenumFromThenTo :: forall a k (b :: k).
Enum a =>
Const a b -> Const a b -> Const a b -> [Const a b]
enumFromTo :: Const a b -> Const a b -> [Const a b]
$cenumFromTo :: forall a k (b :: k).
Enum a =>
Const a b -> Const a b -> [Const a b]
enumFromThen :: Const a b -> Const a b -> [Const a b]
$cenumFromThen :: forall a k (b :: k).
Enum a =>
Const a b -> Const a b -> [Const a b]
enumFrom :: Const a b -> [Const a b]
$cenumFrom :: forall a k (b :: k). Enum a => Const a b -> [Const a b]
fromEnum :: Const a b -> Int
$cfromEnum :: forall a k (b :: k). Enum a => Const a b -> Int
toEnum :: Int -> Const a b
$ctoEnum :: forall a k (b :: k). Enum a => Int -> Const a b
pred :: Const a b -> Const a b
$cpred :: forall a k (b :: k). Enum a => Const a b -> Const a b
succ :: Const a b -> Const a b
$csucc :: forall a k (b :: k). Enum a => Const a b -> Const a b
Enum
, Const a b -> Const a b -> Bool
(Const a b -> Const a b -> Bool)
-> (Const a b -> Const a b -> Bool) -> Eq (Const a b)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall a k (b :: k). Eq a => Const a b -> Const a b -> Bool
/= :: Const a b -> Const a b -> Bool
$c/= :: forall a k (b :: k). Eq a => Const a b -> Const a b -> Bool
== :: Const a b -> Const a b -> Bool
$c== :: forall a k (b :: k). Eq a => Const a b -> Const a b -> Bool
Eq
, Bits (Const a b)
Bits (Const a b)
-> (Const a b -> Int)
-> (Const a b -> Int)
-> (Const a b -> Int)
-> FiniteBits (Const a b)
Const a b -> Int
forall b.
Bits b -> (b -> Int) -> (b -> Int) -> (b -> Int) -> FiniteBits b
forall {a} {k} {b :: k}. FiniteBits a => Bits (Const a b)
forall a k (b :: k). FiniteBits a => Const a b -> Int
countTrailingZeros :: Const a b -> Int
$ccountTrailingZeros :: forall a k (b :: k). FiniteBits a => Const a b -> Int
countLeadingZeros :: Const a b -> Int
$ccountLeadingZeros :: forall a k (b :: k). FiniteBits a => Const a b -> Int
finiteBitSize :: Const a b -> Int
$cfiniteBitSize :: forall a k (b :: k). FiniteBits a => Const a b -> Int
FiniteBits
, Fractional (Const a b)
Const a b
Fractional (Const a b)
-> Const a b
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> Floating (Const a b)
Const a b -> Const a b
Const a b -> Const a b -> Const a b
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
forall {a} {k} {b :: k}. Floating a => Fractional (Const a b)
forall a k (b :: k). Floating a => Const a b
forall a k (b :: k). Floating a => Const a b -> Const a b
forall a k (b :: k).
Floating a =>
Const a b -> Const a b -> Const a b
log1mexp :: Const a b -> Const a b
$clog1mexp :: forall a k (b :: k). Floating a => Const a b -> Const a b
log1pexp :: Const a b -> Const a b
$clog1pexp :: forall a k (b :: k). Floating a => Const a b -> Const a b
expm1 :: Const a b -> Const a b
$cexpm1 :: forall a k (b :: k). Floating a => Const a b -> Const a b
log1p :: Const a b -> Const a b
$clog1p :: forall a k (b :: k). Floating a => Const a b -> Const a b
atanh :: Const a b -> Const a b
$catanh :: forall a k (b :: k). Floating a => Const a b -> Const a b
acosh :: Const a b -> Const a b
$cacosh :: forall a k (b :: k). Floating a => Const a b -> Const a b
asinh :: Const a b -> Const a b
$casinh :: forall a k (b :: k). Floating a => Const a b -> Const a b
tanh :: Const a b -> Const a b
$ctanh :: forall a k (b :: k). Floating a => Const a b -> Const a b
cosh :: Const a b -> Const a b
$ccosh :: forall a k (b :: k). Floating a => Const a b -> Const a b
sinh :: Const a b -> Const a b
$csinh :: forall a k (b :: k). Floating a => Const a b -> Const a b
atan :: Const a b -> Const a b
$catan :: forall a k (b :: k). Floating a => Const a b -> Const a b
acos :: Const a b -> Const a b
$cacos :: forall a k (b :: k). Floating a => Const a b -> Const a b
asin :: Const a b -> Const a b
$casin :: forall a k (b :: k). Floating a => Const a b -> Const a b
tan :: Const a b -> Const a b
$ctan :: forall a k (b :: k). Floating a => Const a b -> Const a b
cos :: Const a b -> Const a b
$ccos :: forall a k (b :: k). Floating a => Const a b -> Const a b
sin :: Const a b -> Const a b
$csin :: forall a k (b :: k). Floating a => Const a b -> Const a b
logBase :: Const a b -> Const a b -> Const a b
$clogBase :: forall a k (b :: k).
Floating a =>
Const a b -> Const a b -> Const a b
** :: Const a b -> Const a b -> Const a b
$c** :: forall a k (b :: k).
Floating a =>
Const a b -> Const a b -> Const a b
sqrt :: Const a b -> Const a b
$csqrt :: forall a k (b :: k). Floating a => Const a b -> Const a b
log :: Const a b -> Const a b
$clog :: forall a k (b :: k). Floating a => Const a b -> Const a b
exp :: Const a b -> Const a b
$cexp :: forall a k (b :: k). Floating a => Const a b -> Const a b
pi :: Const a b
$cpi :: forall a k (b :: k). Floating a => Const a b
Floating
, Num (Const a b)
Num (Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Rational -> Const a b)
-> Fractional (Const a b)
Rational -> Const a b
Const a b -> Const a b
Const a b -> Const a b -> Const a b
forall a.
Num a
-> (a -> a -> a) -> (a -> a) -> (Rational -> a) -> Fractional a
forall {a} {k} {b :: k}. Fractional a => Num (Const a b)
forall a k (b :: k). Fractional a => Rational -> Const a b
forall a k (b :: k). Fractional a => Const a b -> Const a b
forall a k (b :: k).
Fractional a =>
Const a b -> Const a b -> Const a b
fromRational :: Rational -> Const a b
$cfromRational :: forall a k (b :: k). Fractional a => Rational -> Const a b
recip :: Const a b -> Const a b
$crecip :: forall a k (b :: k). Fractional a => Const a b -> Const a b
/ :: Const a b -> Const a b -> Const a b
$c/ :: forall a k (b :: k).
Fractional a =>
Const a b -> Const a b -> Const a b
Fractional
, (forall x. Const a b -> Rep (Const a b) x)
-> (forall x. Rep (Const a b) x -> Const a b)
-> Generic (Const a b)
forall x. Rep (Const a b) x -> Const a b
forall x. Const a b -> Rep (Const a b) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a k (b :: k) x. Rep (Const a b) x -> Const a b
forall a k (b :: k) x. Const a b -> Rep (Const a b) x
$cto :: forall a k (b :: k) x. Rep (Const a b) x -> Const a b
$cfrom :: forall a k (b :: k) x. Const a b -> Rep (Const a b) x
Generic
, (forall (a :: k). Const a a -> Rep1 (Const a) a)
-> (forall (a :: k). Rep1 (Const a) a -> Const a a)
-> Generic1 (Const a)
forall (a :: k). Rep1 (Const a) a -> Const a a
forall (a :: k). Const a a -> Rep1 (Const a) a
forall k a (a :: k). Rep1 (Const a) a -> Const a a
forall k a (a :: k). Const a a -> Rep1 (Const a) a
forall k (f :: k -> *).
(forall (a :: k). f a -> Rep1 f a)
-> (forall (a :: k). Rep1 f a -> f a) -> Generic1 f
$cto1 :: forall k a (a :: k). Rep1 (Const a) a -> Const a a
$cfrom1 :: forall k a (a :: k). Const a a -> Rep1 (Const a) a
Generic1
, Enum (Const a b)
Real (Const a b)
Real (Const a b)
-> Enum (Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> (Const a b, Const a b))
-> (Const a b -> Const a b -> (Const a b, Const a b))
-> (Const a b -> Integer)
-> Integral (Const a b)
Const a b -> Integer
Const a b -> Const a b -> (Const a b, Const a b)
Const a b -> Const a b -> Const a b
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
forall {a} {k} {b :: k}. Integral a => Enum (Const a b)
forall {a} {k} {b :: k}. Integral a => Real (Const a b)
forall a k (b :: k). Integral a => Const a b -> Integer
forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> (Const a b, Const a b)
forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> Const a b
toInteger :: Const a b -> Integer
$ctoInteger :: forall a k (b :: k). Integral a => Const a b -> Integer
divMod :: Const a b -> Const a b -> (Const a b, Const a b)
$cdivMod :: forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> (Const a b, Const a b)
quotRem :: Const a b -> Const a b -> (Const a b, Const a b)
$cquotRem :: forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> (Const a b, Const a b)
mod :: Const a b -> Const a b -> Const a b
$cmod :: forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> Const a b
div :: Const a b -> Const a b -> Const a b
$cdiv :: forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> Const a b
rem :: Const a b -> Const a b -> Const a b
$crem :: forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> Const a b
quot :: Const a b -> Const a b -> Const a b
$cquot :: forall a k (b :: k).
Integral a =>
Const a b -> Const a b -> Const a b
Integral
, Ord (Const a b)
Ord (Const a b)
-> ((Const a b, Const a b) -> [Const a b])
-> ((Const a b, Const a b) -> Const a b -> Int)
-> ((Const a b, Const a b) -> Const a b -> Int)
-> ((Const a b, Const a b) -> Const a b -> Bool)
-> ((Const a b, Const a b) -> Int)
-> ((Const a b, Const a b) -> Int)
-> Ix (Const a b)
(Const a b, Const a b) -> Int
(Const a b, Const a b) -> [Const a b]
(Const a b, Const a b) -> Const a b -> Bool
(Const a b, Const a b) -> Const a b -> Int
forall a.
Ord a
-> ((a, a) -> [a])
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Int)
-> ((a, a) -> a -> Bool)
-> ((a, a) -> Int)
-> ((a, a) -> Int)
-> Ix a
forall {a} {k} {b :: k}. Ix a => Ord (Const a b)
forall a k (b :: k). Ix a => (Const a b, Const a b) -> Int
forall a k (b :: k). Ix a => (Const a b, Const a b) -> [Const a b]
forall a k (b :: k).
Ix a =>
(Const a b, Const a b) -> Const a b -> Bool
forall a k (b :: k).
Ix a =>
(Const a b, Const a b) -> Const a b -> Int
unsafeRangeSize :: (Const a b, Const a b) -> Int
$cunsafeRangeSize :: forall a k (b :: k). Ix a => (Const a b, Const a b) -> Int
rangeSize :: (Const a b, Const a b) -> Int
$crangeSize :: forall a k (b :: k). Ix a => (Const a b, Const a b) -> Int
inRange :: (Const a b, Const a b) -> Const a b -> Bool
$cinRange :: forall a k (b :: k).
Ix a =>
(Const a b, Const a b) -> Const a b -> Bool
unsafeIndex :: (Const a b, Const a b) -> Const a b -> Int
$cunsafeIndex :: forall a k (b :: k).
Ix a =>
(Const a b, Const a b) -> Const a b -> Int
index :: (Const a b, Const a b) -> Const a b -> Int
$cindex :: forall a k (b :: k).
Ix a =>
(Const a b, Const a b) -> Const a b -> Int
range :: (Const a b, Const a b) -> [Const a b]
$crange :: forall a k (b :: k). Ix a => (Const a b, Const a b) -> [Const a b]
Ix
, NonEmpty (Const a b) -> Const a b
Const a b -> Const a b -> Const a b
(Const a b -> Const a b -> Const a b)
-> (NonEmpty (Const a b) -> Const a b)
-> (forall b. Integral b => b -> Const a b -> Const a b)
-> Semigroup (Const a b)
forall b. Integral b => b -> Const a b -> Const a b
forall a.
(a -> a -> a)
-> (NonEmpty a -> a)
-> (forall b. Integral b => b -> a -> a)
-> Semigroup a
forall a k (b :: k).
Semigroup a =>
NonEmpty (Const a b) -> Const a b
forall a k (b :: k).
Semigroup a =>
Const a b -> Const a b -> Const a b
forall a k (b :: k) b.
(Semigroup a, Integral b) =>
b -> Const a b -> Const a b
stimes :: forall b. Integral b => b -> Const a b -> Const a b
$cstimes :: forall a k (b :: k) b.
(Semigroup a, Integral b) =>
b -> Const a b -> Const a b
sconcat :: NonEmpty (Const a b) -> Const a b
$csconcat :: forall a k (b :: k).
Semigroup a =>
NonEmpty (Const a b) -> Const a b
<> :: Const a b -> Const a b -> Const a b
$c<> :: forall a k (b :: k).
Semigroup a =>
Const a b -> Const a b -> Const a b
Semigroup
, Semigroup (Const a b)
Const a b
Semigroup (Const a b)
-> Const a b
-> (Const a b -> Const a b -> Const a b)
-> ([Const a b] -> Const a b)
-> Monoid (Const a b)
[Const a b] -> Const a b
Const a b -> Const a b -> Const a b
forall a.
Semigroup a -> a -> (a -> a -> a) -> ([a] -> a) -> Monoid a
forall {a} {k} {b :: k}. Monoid a => Semigroup (Const a b)
forall a k (b :: k). Monoid a => Const a b
forall a k (b :: k). Monoid a => [Const a b] -> Const a b
forall a k (b :: k).
Monoid a =>
Const a b -> Const a b -> Const a b
mconcat :: [Const a b] -> Const a b
$cmconcat :: forall a k (b :: k). Monoid a => [Const a b] -> Const a b
mappend :: Const a b -> Const a b -> Const a b
$cmappend :: forall a k (b :: k).
Monoid a =>
Const a b -> Const a b -> Const a b
mempty :: Const a b
$cmempty :: forall a k (b :: k). Monoid a => Const a b
Monoid
, Integer -> Const a b
Const a b -> Const a b
Const a b -> Const a b -> Const a b
(Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Const a b -> Const a b)
-> (Integer -> Const a b)
-> Num (Const a b)
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
forall a k (b :: k). Num a => Integer -> Const a b
forall a k (b :: k). Num a => Const a b -> Const a b
forall a k (b :: k). Num a => Const a b -> Const a b -> Const a b
fromInteger :: Integer -> Const a b
$cfromInteger :: forall a k (b :: k). Num a => Integer -> Const a b
signum :: Const a b -> Const a b
$csignum :: forall a k (b :: k). Num a => Const a b -> Const a b
abs :: Const a b -> Const a b
$cabs :: forall a k (b :: k). Num a => Const a b -> Const a b
negate :: Const a b -> Const a b
$cnegate :: forall a k (b :: k). Num a => Const a b -> Const a b
- :: Const a b -> Const a b -> Const a b $c* :: forall a k (b :: k). Num a => Const a b -> Const a b -> Const a b
- :: Const a b -> Const a b -> Const a b $c- :: forall a k (b :: k). Num a => Const a b -> Const a b -> Const a b
- :: Const a b -> Const a b -> Const a b
$c+ :: forall a k (b :: k). Num a => Const a b -> Const a b -> Const a b
Num
, Eq (Const a b)
Eq (Const a b) -> (Const a b -> Const a b -> Ordering) -> (Const a b -> Const a b -> Bool) -> (Const a b -> Const a b -> Bool) -> (Const a b -> Const a b -> Bool) -> (Const a b -> Const a b -> Bool) -> (Const a b -> Const a b -> Const a b) -> (Const a b -> Const a b -> Const a b) -> Ord (Const a b) Const a b -> Const a b -> Bool Const a b -> Const a b -> Ordering Const a b -> Const a b -> Const a b 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} {k} {b :: k}. Ord a => Eq (Const a b) forall a k (b :: k). Ord a => Const a b -> Const a b -> Bool forall a k (b :: k). Ord a => Const a b -> Const a b -> Ordering forall a k (b :: k). Ord a => Const a b -> Const a b -> Const a b min :: Const a b -> Const a b -> Const a b $cmin :: forall a k (b :: k). Ord a => Const a b -> Const a b -> Const a b max :: Const a b -> Const a b -> Const a b $cmax :: forall a k (b :: k). Ord a => Const a b -> Const a b -> Const a b
= :: Const a b -> Const a b -> Bool $c>= :: forall a k (b :: k). Ord a => Const a b -> Const a b -> Bool :: Const a b -> Const a b -> Bool $c> :: forall a k (b :: k). Ord a => Const a b -> Const a b -> Bool <= :: Const a b -> Const a b -> Bool $c<= :: forall a k (b :: k). Ord a => Const a b -> Const a b -> Bool < :: Const a b -> Const a b -> Bool $c< :: forall a k (b :: k). Ord a => Const a b -> Const a b -> Bool compare :: Const a b -> Const a b -> Ordering $ccompare :: forall a k (b :: k). Ord a => Const a b -> Const a b -> Ordering Ord
, Num (Const a b) Ord (Const a b) Num (Const a b) -> Ord (Const a b) -> (Const a b -> Rational) -> Real (Const a b) Const a b -> Rational forall a. Num a -> Ord a -> (a -> Rational) -> Real a forall {a} {k} {b :: k}. Real a => Num (Const a b) forall {a} {k} {b :: k}. Real a => Ord (Const a b) forall a k (b :: k). Real a => Const a b -> Rational toRational :: Const a b -> Rational $ctoRational :: forall a k (b :: k). Real a => Const a b -> Rational Real
, Fractional (Const a b) Real (Const a b) Real (Const a b) -> Fractional (Const a b) -> (forall b. Integral b => Const a b -> (b, Const a b)) -> (forall b. Integral b => Const a b -> b) -> (forall b. Integral b => Const a b -> b) -> (forall b. Integral b => Const a b -> b) -> (forall b. Integral b => Const a b -> b) -> RealFrac (Const a b) forall b. Integral b => Const a b -> b forall b. Integral b => Const a b -> (b, Const a b) 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} {k} {b :: k}. RealFrac a => Fractional (Const a b) forall {a} {k} {b :: k}. RealFrac a => Real (Const a b) forall a k (b :: k) b. (RealFrac a, Integral b) => Const a b -> b forall a k (b :: k) b. (RealFrac a, Integral b) => Const a b -> (b, Const a b) floor :: forall b. Integral b => Const a b -> b $cfloor :: forall a k (b :: k) b. (RealFrac a, Integral b) => Const a b -> b ceiling :: forall b. Integral b => Const a b -> b $cceiling :: forall a k (b :: k) b. (RealFrac a, Integral b) => Const a b -> b round :: forall b. Integral b => Const a b -> b $cround :: forall a k (b :: k) b. (RealFrac a, Integral b) => Const a b -> b truncate :: forall b. Integral b => Const a b -> b $ctruncate :: forall a k (b :: k) b. (RealFrac a, Integral b) => Const a b -> b properFraction :: forall b. Integral b => Const a b -> (b, Const a b) $cproperFraction :: forall a k (b :: k) b. (RealFrac a, Integral b) => Const a b -> (b, Const a b) RealFrac
, Floating (Const a b) RealFrac (Const a b) RealFrac (Const a b) -> Floating (Const a b) -> (Const a b -> Integer) -> (Const a b -> Int) -> (Const a b -> (Int, Int)) -> (Const a b -> (Integer, Int)) -> (Integer -> Int -> Const a b) -> (Const a b -> Int) -> (Const a b -> Const a b) -> (Int -> Const a b -> Const a b) -> (Const a b -> Bool) -> (Const a b -> Bool) -> (Const a b -> Bool) -> (Const a b -> Bool) -> (Const a b -> Bool) -> (Const a b -> Const a b -> Const a b) -> RealFloat (Const a b) Int -> Const a b -> Const a b Integer -> Int -> Const a b Const a b -> Bool Const a b -> Int Const a b -> Integer Const a b -> (Int, Int) Const a b -> (Integer, Int) Const a b -> Const a b Const a b -> Const a b -> Const a b 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 forall {a} {k} {b :: k}. RealFloat a => Floating (Const a b) forall {a} {k} {b :: k}. RealFloat a => RealFrac (Const a b) forall a k (b :: k). RealFloat a => Int -> Const a b -> Const a b forall a k (b :: k). RealFloat a => Integer -> Int -> Const a b forall a k (b :: k). RealFloat a => Const a b -> Bool forall a k (b :: k). RealFloat a => Const a b -> Int forall a k (b :: k). RealFloat a => Const a b -> Integer forall a k (b :: k). RealFloat a => Const a b -> (Int, Int) forall a k (b :: k). RealFloat a => Const a b -> (Integer, Int) forall a k (b :: k). RealFloat a => Const a b -> Const a b forall a k (b :: k). RealFloat a => Const a b -> Const a b -> Const a b atan2 :: Const a b -> Const a b -> Const a b $catan2 :: forall a k (b :: k). RealFloat a => Const a b -> Const a b -> Const a b isIEEE :: Const a b -> Bool $cisIEEE :: forall a k (b :: k). RealFloat a => Const a b -> Bool isNegativeZero :: Const a b -> Bool $cisNegativeZero :: forall a k (b :: k). RealFloat a => Const a b -> Bool isDenormalized :: Const a b -> Bool $cisDenormalized :: forall a k (b :: k). RealFloat a => Const a b -> Bool isInfinite :: Const a b -> Bool $cisInfinite :: forall a k (b :: k). RealFloat a => Const a b -> Bool isNaN :: Const a b -> Bool $cisNaN :: forall a k (b :: k). RealFloat a => Const a b -> Bool scaleFloat :: Int -> Const a b -> Const a b $cscaleFloat :: forall a k (b :: k). RealFloat a => Int -> Const a b -> Const a b significand :: Const a b -> Const a b $csignificand :: forall a k (b :: k). RealFloat a => Const a b -> Const a b exponent :: Const a b -> Int $cexponent :: forall a k (b :: k). RealFloat a => Const a b -> Int encodeFloat :: Integer -> Int -> Const a b $cencodeFloat :: forall a k (b :: k). RealFloat a => Integer -> Int -> Const a b decodeFloat :: Const a b -> (Integer, Int) $cdecodeFloat :: forall a k (b :: k). RealFloat a => Const a b -> (Integer, Int) floatRange :: Const a b -> (Int, Int) $cfloatRange :: forall a k (b :: k). RealFloat a => Const a b -> (Int, Int) floatDigits :: Const a b -> Int $cfloatDigits :: forall a k (b :: k). RealFloat a => Const a b -> Int floatRadix :: Const a b -> Integer $cfloatRadix :: forall a k (b :: k). RealFloat a => Const a b -> Integer RealFloat
, Ptr (Const a b) -> IO (Const a b) Ptr (Const a b) -> Int -> IO (Const a b) Ptr (Const a b) -> Int -> Const a b -> IO () Ptr (Const a b) -> Const a b -> IO () Const a b -> Int (Const a b -> Int) -> (Const a b -> Int) -> (Ptr (Const a b) -> Int -> IO (Const a b)) -> (Ptr (Const a b) -> Int -> Const a b -> IO ()) -> (forall b. Ptr b -> Int -> IO (Const a b)) -> (forall b. Ptr b -> Int -> Const a b -> IO ()) -> (Ptr (Const a b) -> IO (Const a b)) -> (Ptr (Const a b) -> Const a b -> IO ()) -> Storable (Const a b) forall b. Ptr b -> Int -> IO (Const a b) forall b. Ptr b -> Int -> Const a b -> IO () forall a. (a -> Int) -> (a -> Int) -> (Ptr a -> Int -> IO a) -> (Ptr a -> Int -> a -> IO ()) -> (forall b. Ptr b -> Int -> IO a) -> (forall b. Ptr b -> Int -> a -> IO ()) -> (Ptr a -> IO a) -> (Ptr a -> a -> IO ()) -> Storable a forall a k (b :: k). Storable a => Ptr (Const a b) -> IO (Const a b) forall a k (b :: k). Storable a => Ptr (Const a b) -> Int -> IO (Const a b) forall a k (b :: k). Storable a => Ptr (Const a b) -> Int -> Const a b -> IO () forall a k (b :: k). Storable a => Ptr (Const a b) -> Const a b -> IO () forall a k (b :: k). Storable a => Const a b -> Int forall a k (b :: k) b. Storable a => Ptr b -> Int -> IO (Const a b) forall a k (b :: k) b. Storable a => Ptr b -> Int -> Const a b -> IO () poke :: Ptr (Const a b) -> Const a b -> IO () $cpoke :: forall a k (b :: k). Storable a => Ptr (Const a b) -> Const a b -> IO () peek :: Ptr (Const a b) -> IO (Const a b) $cpeek :: forall a k (b :: k). Storable a => Ptr (Const a b) -> IO (Const a b) pokeByteOff :: forall b. Ptr b -> Int -> Const a b -> IO () $cpokeByteOff :: forall a k (b :: k) b. Storable a => Ptr b -> Int -> Const a b -> IO () peekByteOff :: forall b. Ptr b -> Int -> IO (Const a b) $cpeekByteOff :: forall a k (b :: k) b. Storable a => Ptr b -> Int -> IO (Const a b) pokeElemOff :: Ptr (Const a b) -> Int -> Const a b -> IO () $cpokeElemOff :: forall a k (b :: k). Storable a => Ptr (Const a b) -> Int -> Const a b -> IO () peekElemOff :: Ptr (Const a b) -> Int -> IO (Const a b) $cpeekElemOff :: forall a k (b :: k). Storable a => Ptr (Const a b) -> Int -> IO (Const a b) alignment :: Const a b -> Int $calignment :: forall a k (b :: k). Storable a => Const a b -> Int sizeOf :: Const a b -> Int $csizeOf :: forall a k (b :: k). Storable a => Const a b -> Int Storable
)
instance Read a => Read (Const a b) where readsPrec :: Int -> ReadS (Const a b) readsPrec Int d = Bool -> ReadS (Const a b) -> ReadS (Const a b) forall a. Bool -> ReadS a -> ReadS a readParen (Int d Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10) (ReadS (Const a b) -> ReadS (Const a b)) -> ReadS (Const a b) -> ReadS (Const a b) forall a b. (a -> b) -> a -> b $ \String r -> [(a -> Const a b forall {k} a (b :: k). a -> Const a b Const a x,String t) | (String "Const", String s) <- ReadS String lex String r, (a x, String t) <- Int -> ReadS a forall a. Read a => Int -> ReadS a readsPrec Int 11 String s]
instance Show a => Show (Const a b) where showsPrec :: Int -> Const a b -> ShowS showsPrec Int d (Const a x) = Bool -> ShowS -> ShowS showParen (Int d Int -> Int -> Bool forall a. Ord a => a -> a -> Bool > Int 10) (ShowS -> ShowS) -> ShowS -> ShowS forall a b. (a -> b) -> a -> b $ String -> ShowS showString String "Const " ShowS -> ShowS -> ShowS forall b c a. (b -> c) -> (a -> b) -> a -> c . Int -> a -> ShowS forall a. Show a => Int -> a -> ShowS showsPrec Int 11 a x
instance Foldable (Const m) where foldMap :: forall m a. Monoid m => (a -> m) -> Const m a -> m foldMap a -> m _ Const m a _ = m forall a. Monoid a => a mempty
instance Functor (Const m) where fmap :: forall a b. (a -> b) -> Const m a -> Const m b fmap a -> b _ (Const m v) = m -> Const m b forall {k} a (b :: k). a -> Const a b Const m v
instance Monoid m => Applicative (Const m) where
pure :: forall a. a -> Const m a
pure a
_ = m -> Const m a
forall {k} a (b :: k). a -> Const a b
Const m
forall a. Monoid a => a
mempty
liftA2 :: forall a b c. (a -> b -> c) -> Const m a -> Const m b -> Const m c
liftA2 a -> b -> c
_ (Const m
x) (Const m
y) = m -> Const m c
forall {k} a (b :: k). a -> Const a b
Const (m
x m -> m -> m
forall a. Monoid a => a -> a -> a
mappend m
y)
<*> :: forall a b. Const m (a -> b) -> Const m a -> Const m b
(<*>) = (m -> m -> m) -> Const m (a -> b) -> Const m a -> Const m b
coerce (m -> m -> m
forall a. Monoid a => a -> a -> a
mappend :: m -> m -> m)