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