recursion-schemes-ix-0.1.0.0: Recursion schemes over indexed Functors
Safe HaskellNone
LanguageHaskell2010

Data.IFunctor.Foldable

Synopsis

Fixpoint for indexed types

newtype IFix f ix Source #

Fixpoint type

Constructors

IFix 

Fields

Instances

Instances details
Generic1 (IFix f :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Foldable

Associated Types

type Rep1 (IFix f) :: k -> Type #

Methods

from1 :: forall (a :: k0). IFix f a -> Rep1 (IFix f) a #

to1 :: forall (a :: k0). Rep1 (IFix f) a -> IFix f a #

(IEq f, SingI ix) => Eq (IFix f ix) Source # 
Instance details

Defined in Data.IFunctor.Foldable

Methods

(==) :: IFix f ix -> IFix f ix -> Bool #

(/=) :: IFix f ix -> IFix f ix -> Bool #

(IOrd f, SingI ix) => Ord (IFix f ix) Source # 
Instance details

Defined in Data.IFunctor.Foldable

Methods

compare :: IFix f ix -> IFix f ix -> Ordering #

(<) :: IFix f ix -> IFix f ix -> Bool #

(<=) :: IFix f ix -> IFix f ix -> Bool #

(>) :: IFix f ix -> IFix f ix -> Bool #

(>=) :: IFix f ix -> IFix f ix -> Bool #

max :: IFix f ix -> IFix f ix -> IFix f ix #

min :: IFix f ix -> IFix f ix -> IFix f ix #

(IRead f, SingI ix) => Read (IFix f ix) Source # 
Instance details

Defined in Data.IFunctor.Foldable

Methods

readsPrec :: Int -> ReadS (IFix f ix) #

readList :: ReadS [IFix f ix] #

readPrec :: ReadPrec (IFix f ix) #

readListPrec :: ReadPrec [IFix f ix] #

(IShow f, SingI ix) => Show (IFix f ix) Source # 
Instance details

Defined in Data.IFunctor.Foldable

Methods

showsPrec :: Int -> IFix f ix -> ShowS #

show :: IFix f ix -> String #

showList :: [IFix f ix] -> ShowS #

Generic (IFix f ix) Source # 
Instance details

Defined in Data.IFunctor.Foldable

Associated Types

type Rep (IFix f ix) :: Type -> Type #

Methods

from :: IFix f ix -> Rep (IFix f ix) x #

to :: Rep (IFix f ix) x -> IFix f ix #

type Rep1 (IFix f :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Foldable

type Rep1 (IFix f :: k -> Type) = D1 ('MetaData "IFix" "Data.IFunctor.Foldable" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'True) (C1 ('MetaCons "IFix" 'PrefixI 'True) (S1 ('MetaSel ('Just "unIFix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (f (IFix f)))))
type Rep (IFix f ix) Source # 
Instance details

Defined in Data.IFunctor.Foldable

type Rep (IFix f ix) = D1 ('MetaData "IFix" "Data.IFunctor.Foldable" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'True) (C1 ('MetaCons "IFix" 'PrefixI 'True) (S1 ('MetaSel ('Just "unIFix") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (IFix f) ix))))

Morphisms

Constructive morphisms

cata :: IFunctor f => (f a ~~> a) -> IFix f ~~> a Source #

Catamorphism, ie. fold

prepro :: IFunctor f => (forall b. f b ~~> f b) -> (f a ~~> a) -> IFix f ~~> a Source #

Fokkinga's prepromorphism

para :: IFunctor f => (f (Product (IFix f) a) ~~> a) -> IFix f ~~> a Source #

Paramorphism

zygo :: IFunctor f => (f b ~~> b) -> (f (Product b a) ~~> a) -> IFix f ~~> a Source #

Zygomorphism

histo :: IFunctor f => (f (ICofree f a) ~~> a) -> IFix f ~~> a Source #

Histomorphism

Destructive morphisms

ana :: IFunctor f => (a ~~> f a) -> a ~~> IFix f Source #

Anamorphism, ie. unfold

postpro :: IFunctor f => (forall b. f b ~~> f b) -> (a ~~> f a) -> a ~~> IFix f Source #

Fokkinga's postpromorphism

apo :: IFunctor f => (a ~~> f (Sum (IFix f) a)) -> a ~~> IFix f Source #

Apomorphism

gapo :: IFunctor f => (b ~~> f b) -> (a ~~> f (Sum b a)) -> a ~~> IFix f Source #

GApomorphism

futu :: IFunctor f => (a ~~> f (IFree f a)) -> a ~~> IFix f Source #

Futumorphism

Combined morphisms

hylo :: IFunctor f => (f b ~~> b) -> (a ~~> f a) -> a ~~> b Source #

Hylomorphism, fold then unfold

dyna :: IFunctor f => (f (ICofree f b) ~~> b) -> (a ~~> f a) -> a ~~> b Source #

Dynamorphism

chrono :: IFunctor f => (f (ICofree f b) ~~> b) -> (a ~~> f (IFree f a)) -> a ~~> b Source #

Chronomorphism

meta :: (IFunctor f, IFunctor g) => (f a ~~> a) -> (a ~~> b) -> (b ~~> g b) -> IFix f ~~> IFix g Source #

Metamorphism TODO: ensure only 1 pass over structure

elgot :: forall f a b. IFunctor f => (f a ~~> a) -> (b ~~> Sum a (f b)) -> b ~~> a Source #

coelgot :: forall f a b. IFunctor f => (Product a (f b) ~~> b) -> (a ~~> f a) -> a ~~> b Source #

Monadic morphisms

cataM :: (ITraversable f, Monad m) => (forall ix. SingI ix => f a ix -> m (a ix)) -> forall ix. SingI ix => IFix f ix -> m (a ix) Source #

Monadic catamorphism

paraM :: (ITraversable f, Monad m) => (forall ix. SingI ix => f (Product (IFix f) a) ix -> m (a ix)) -> forall ix. SingI ix => IFix f ix -> m (a ix) Source #

Monadic Paramorphism

anaM :: (ITraversable f, Monad m) => (forall ix. SingI ix => a ix -> m (f a ix)) -> forall ix. SingI ix => a ix -> m (IFix f ix) Source #

Monadic anamorphism

apoM :: (ITraversable f, Monad m) => (forall ix. SingI ix => a ix -> m (f (Sum (IFix f) a) ix)) -> forall ix. SingI ix => a ix -> m (IFix f ix) Source #

Monadic apomorphism

hyloM :: (ITraversable f, Monad m) => (forall ix. SingI ix => f b ix -> m (b ix)) -> (forall ix. SingI ix => a ix -> m (f a ix)) -> forall ix. SingI ix => a ix -> m (b ix) Source #

Monadic hylomorphism

dynaM :: (ITraversable f, Monad m) => (forall ix. SingI ix => f (ICofree f b) ix -> m (b ix)) -> (forall ix. SingI ix => a ix -> m (f a ix)) -> forall ix. SingI ix => a ix -> m (b ix) Source #

Monadic dynamorphism

Distribution Laws

type DistLaw f g = forall a. f (g a) ~~> g (f a) Source #

Type of distribution laws A Constructive morphism means the second part is a IComonad A Destructive morphism means the first part is an IMonad

Constructive distribution laws

distZygo :: IFunctor f => (f b ~~> b) -> DistLaw f (Product b) Source #

Destructive distribution laws

distGApo :: IFunctor f => (b ~~> f b) -> DistLaw (Sum b) f Source #

Generalized morphisms

gfold :: forall f w a. (IFunctor f, IComonad w) => DistLaw f w -> (f (w a) ~~> a) -> IFix f ~~> a Source #

Generalized fold

gunfold :: forall f m a. (IFunctor f, IMonad m) => DistLaw m f -> (a ~~> f (m a)) -> a ~~> IFix f Source #

Generalized unfold

ghylo :: forall f w m a b. (IFunctor f, IComonad w, IMonad m) => DistLaw f w -> DistLaw m f -> (f (w b) ~~> b) -> (a ~~> f (m a)) -> a ~~> b Source #

Generalized hylomorphism

gprepro :: forall f w a. (IFunctor f, IComonad w) => DistLaw f w -> (forall c. f c ~~> f c) -> (f (w a) ~~> a) -> IFix f ~~> a Source #

Generalized prepromorphism

gpostpro :: forall f m a. (IFunctor f, IMonad m) => DistLaw m f -> (forall c. f c ~~> f c) -> (a ~~> f (m a)) -> a ~~> IFix f Source #

Generalized postpromorphism

Generalized monadic morphisms

gfoldM :: forall f w m a. (ITraversable f, ITraversable w, IComonad w, Monad m) => DistLaw f w -> (forall ix. SingI ix => f (w a) ix -> m (a ix)) -> forall ix. SingI ix => IFix f ix -> m (a ix) Source #

Generalized monadic fold

gunfoldM :: forall f m a x. (ITraversable f, ITraversable m, IMonad m, Monad x) => DistLaw m f -> (forall ix. SingI ix => a ix -> x (f (m a) ix)) -> forall ix. SingI ix => a ix -> x (IFix f ix) Source #

Generalized monadic unfold

ghyloM :: forall f w m a b x. (ITraversable f, ITraversable w, ITraversable m, IComonad w, IMonad m, Monad x) => DistLaw f w -> DistLaw m f -> (forall ix. SingI ix => f (w b) ix -> x (b ix)) -> (forall ix. SingI ix => a ix -> x (f (m a) ix)) -> forall ix. SingI ix => a ix -> x (b ix) Source #

Generalized monadic hylomorphism

Re-exports

newtype Const a (b :: k) #

The Const functor.

Constructors

Const 

Fields

Instances

Instances details
Generic1 (Const a :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Associated Types

type Rep1 (Const a) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). Const a a0 -> Rep1 (Const a) a0 #

to1 :: forall (a0 :: k0). Rep1 (Const a) a0 -> Const a a0 #

Functor (Const m :: Type -> Type)

Since: base-2.1

Instance details

Defined in Data.Functor.Const

Methods

fmap :: (a -> b) -> Const m a -> Const m b #

(<$) :: a -> Const m b -> Const m a #

Monoid m => Applicative (Const m :: Type -> Type)

Since: base-2.0.1

Instance details

Defined in Data.Functor.Const

Methods

pure :: a -> Const m a #

(<*>) :: Const m (a -> b) -> Const m a -> Const m b #

liftA2 :: (a -> b -> c) -> Const m a -> Const m b -> Const m c #

(*>) :: Const m a -> Const m b -> Const m b #

(<*) :: Const m a -> Const m b -> Const m a #

Foldable (Const m :: Type -> Type)

Since: base-4.7.0.0

Instance details

Defined in Data.Functor.Const

Methods

fold :: Monoid m0 => Const m m0 -> m0 #

foldMap :: Monoid m0 => (a -> m0) -> Const m a -> m0 #

foldMap' :: Monoid m0 => (a -> m0) -> Const m a -> m0 #

foldr :: (a -> b -> b) -> b -> Const m a -> b #

foldr' :: (a -> b -> b) -> b -> Const m a -> b #

foldl :: (b -> a -> b) -> b -> Const m a -> b #

foldl' :: (b -> a -> b) -> b -> Const m a -> b #

foldr1 :: (a -> a -> a) -> Const m a -> a #

foldl1 :: (a -> a -> a) -> Const m a -> a #

toList :: Const m a -> [a] #

null :: Const m a -> Bool #

length :: Const m a -> Int #

elem :: Eq a => a -> Const m a -> Bool #

maximum :: Ord a => Const m a -> a #

minimum :: Ord a => Const m a -> a #

sum :: Num a => Const m a -> a #

product :: Num a => Const m a -> a #

Traversable (Const m :: Type -> Type)

Since: base-4.7.0.0

Instance details

Defined in Data.Traversable

Methods

traverse :: Applicative f => (a -> f b) -> Const m a -> f (Const m b) #

sequenceA :: Applicative f => Const m (f a) -> f (Const m a) #

mapM :: Monad m0 => (a -> m0 b) -> Const m a -> m0 (Const m b) #

sequence :: Monad m0 => Const m (m0 a) -> m0 (Const m a) #

Bounded a => Bounded (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

minBound :: Const a b #

maxBound :: Const a b #

Enum a => Enum (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

succ :: Const a b -> Const a b #

pred :: Const a b -> Const a b #

toEnum :: Int -> Const a b #

fromEnum :: Const a b -> Int #

enumFrom :: Const a b -> [Const a b] #

enumFromThen :: Const a b -> Const a b -> [Const a b] #

enumFromTo :: Const a b -> Const a b -> [Const a b] #

enumFromThenTo :: Const a b -> Const a b -> Const a b -> [Const a b] #

Eq a => Eq (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

(==) :: Const a b -> Const a b -> Bool #

(/=) :: Const a b -> Const a b -> Bool #

Floating a => Floating (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

pi :: Const a b #

exp :: Const a b -> Const a b #

log :: Const a b -> Const a b #

sqrt :: Const a b -> Const a b #

(**) :: Const a b -> Const a b -> Const a b #

logBase :: Const a b -> Const a b -> Const a b #

sin :: Const a b -> Const a b #

cos :: Const a b -> Const a b #

tan :: Const a b -> Const a b #

asin :: Const a b -> Const a b #

acos :: Const a b -> Const a b #

atan :: Const a b -> Const a b #

sinh :: Const a b -> Const a b #

cosh :: Const a b -> Const a b #

tanh :: Const a b -> Const a b #

asinh :: Const a b -> Const a b #

acosh :: Const a b -> Const a b #

atanh :: Const a b -> Const a b #

log1p :: Const a b -> Const a b #

expm1 :: Const a b -> Const a b #

log1pexp :: Const a b -> Const a b #

log1mexp :: Const a b -> Const a b #

Fractional a => Fractional (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

(/) :: Const a b -> Const a b -> Const a b #

recip :: Const a b -> Const a b #

fromRational :: Rational -> Const a b #

Integral a => Integral (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

quot :: Const a b -> Const a b -> Const a b #

rem :: Const a b -> Const a b -> Const a b #

div :: Const a b -> Const a b -> Const a b #

mod :: Const a b -> Const a b -> Const a b #

quotRem :: Const a b -> Const a b -> (Const a b, Const a b) #

divMod :: Const a b -> Const a b -> (Const a b, Const a b) #

toInteger :: Const a b -> Integer #

(Typeable k, Data a, Typeable b) => Data (Const a b)

Since: base-4.10.0.0

Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b0. Data d => c (d -> b0) -> d -> c b0) -> (forall g. g -> c g) -> Const a b -> c (Const a b) #

gunfold :: (forall b0 r. Data b0 => c (b0 -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Const a b) #

toConstr :: Const a b -> Constr #

dataTypeOf :: Const a b -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Const a b)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Const a b)) #

gmapT :: (forall b0. Data b0 => b0 -> b0) -> Const a b -> Const a b #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Const a b -> r #

gmapQ :: (forall d. Data d => d -> u) -> Const a b -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Const a b -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Const a b -> m (Const a b) #

Num a => Num (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

(+) :: 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 #

negate :: Const a b -> Const a b #

abs :: Const a b -> Const a b #

signum :: Const a b -> Const a b #

fromInteger :: Integer -> Const a b #

Ord a => Ord (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

compare :: 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 #

max :: Const a b -> Const a b -> Const a b #

min :: Const a b -> Const a b -> Const a b #

Read a => Read (Const a b)

This instance would be equivalent to the derived instances of the Const newtype if the getConst field were removed

Since: base-4.8.0.0

Instance details

Defined in Data.Functor.Const

Real a => Real (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

toRational :: Const a b -> Rational #

RealFloat a => RealFloat (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

floatRadix :: Const a b -> Integer #

floatDigits :: Const a b -> Int #

floatRange :: Const a b -> (Int, Int) #

decodeFloat :: Const a b -> (Integer, Int) #

encodeFloat :: Integer -> Int -> Const a b #

exponent :: Const a b -> Int #

significand :: Const a b -> Const a b #

scaleFloat :: Int -> Const a b -> Const a b #

isNaN :: Const a b -> Bool #

isInfinite :: Const a b -> Bool #

isDenormalized :: Const a b -> Bool #

isNegativeZero :: Const a b -> Bool #

isIEEE :: Const a b -> Bool #

atan2 :: Const a b -> Const a b -> Const a b #

RealFrac a => RealFrac (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

properFraction :: Integral b0 => Const a b -> (b0, Const a b) #

truncate :: Integral b0 => Const a b -> b0 #

round :: Integral b0 => Const a b -> b0 #

ceiling :: Integral b0 => Const a b -> b0 #

floor :: Integral b0 => Const a b -> b0 #

Show a => Show (Const a b)

This instance would be equivalent to the derived instances of the Const newtype if the getConst field were removed

Since: base-4.8.0.0

Instance details

Defined in Data.Functor.Const

Methods

showsPrec :: Int -> Const a b -> ShowS #

show :: Const a b -> String #

showList :: [Const a b] -> ShowS #

Ix a => Ix (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

range :: (Const a b, Const a b) -> [Const a b] #

index :: (Const a b, Const a b) -> Const a b -> Int #

unsafeIndex :: (Const a b, Const a b) -> Const a b -> Int #

inRange :: (Const a b, Const a b) -> Const a b -> Bool #

rangeSize :: (Const a b, Const a b) -> Int #

unsafeRangeSize :: (Const a b, Const a b) -> Int #

Generic (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Associated Types

type Rep (Const a b) :: Type -> Type #

Methods

from :: Const a b -> Rep (Const a b) x #

to :: Rep (Const a b) x -> Const a b #

Semigroup a => Semigroup (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

(<>) :: Const a b -> Const a b -> Const a b #

sconcat :: NonEmpty (Const a b) -> Const a b #

stimes :: Integral b0 => b0 -> Const a b -> Const a b #

Monoid a => Monoid (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

mempty :: Const a b #

mappend :: Const a b -> Const a b -> Const a b #

mconcat :: [Const a b] -> Const a b #

Storable a => Storable (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

sizeOf :: Const a b -> Int #

alignment :: Const a b -> Int #

peekElemOff :: Ptr (Const a b) -> Int -> IO (Const a b) #

pokeElemOff :: Ptr (Const a b) -> Int -> Const a b -> IO () #

peekByteOff :: Ptr b0 -> Int -> IO (Const a b) #

pokeByteOff :: Ptr b0 -> Int -> Const a b -> IO () #

peek :: Ptr (Const a b) -> IO (Const a b) #

poke :: Ptr (Const a b) -> Const a b -> IO () #

Bits a => Bits (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

(.&.) :: Const a b -> Const a b -> Const a b #

(.|.) :: Const a b -> Const a b -> Const a b #

xor :: Const a b -> Const a b -> Const a b #

complement :: Const a b -> Const a b #

shift :: Const a b -> Int -> Const a b #

rotate :: Const a b -> Int -> Const a b #

zeroBits :: Const a b #

bit :: Int -> Const a b #

setBit :: Const a b -> Int -> Const a b #

clearBit :: Const a b -> Int -> Const a b #

complementBit :: Const a b -> Int -> Const a b #

testBit :: Const a b -> Int -> Bool #

bitSizeMaybe :: Const a b -> Maybe Int #

bitSize :: Const a b -> Int #

isSigned :: Const a b -> Bool #

shiftL :: Const a b -> Int -> Const a b #

unsafeShiftL :: Const a b -> Int -> Const a b #

shiftR :: Const a b -> Int -> Const a b #

unsafeShiftR :: Const a b -> Int -> Const a b #

rotateL :: Const a b -> Int -> Const a b #

rotateR :: Const a b -> Int -> Const a b #

popCount :: Const a b -> Int #

FiniteBits a => FiniteBits (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

type Rep1 (Const a :: k -> Type) 
Instance details

Defined in Data.Functor.Const

type Rep1 (Const a :: k -> Type) = D1 ('MetaData "Const" "Data.Functor.Const" "base" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))
type Rep (Const a b) 
Instance details

Defined in Data.Functor.Const

type Rep (Const a b) = D1 ('MetaData "Const" "Data.Functor.Const" "base" 'True) (C1 ('MetaCons "Const" 'PrefixI 'True) (S1 ('MetaSel ('Just "getConst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))

data Product (f :: k -> Type) (g :: k -> Type) (a :: k) #

Lifted product of functors.

Constructors

Pair (f a) (g a) 

Instances

Instances details
IFunctor (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor

Methods

imap :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> b) -> Product a a0 ~~> Product a b Source #

IOrd2 a => IOrd (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

icompare :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => a0 ix -> a0 ix -> Ordering) -> Product a a0 ix -> Product a a0 ix -> Ordering Source #

IEq2 a => IEq (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

ieq :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => a0 ix -> a0 ix -> Bool) -> Product a a0 ix -> Product a a0 ix -> Bool Source #

IRead2 a => IRead (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

ireadPrec :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => ReadPrec (a0 ix)) -> ReadPrec (Product a a0 ix) Source #

ireadsPrec :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => Int -> ReadS (a0 ix)) -> Int -> ReadS (Product a a0 ix) Source #

IShow2 a => IShow (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

ishowsPrec :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => Int -> a0 ix -> ShowS) -> Int -> Product a a0 ix -> ShowS Source #

ishow :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => Int -> a0 ix -> ShowS) -> Product a a0 ix -> String Source #

ITraversable (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.ITraversable

Methods

itraverse :: forall m (ix :: k0) a0 b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a0 ix -> m (b ix)) -> Product a a0 ix -> m (Product a b ix) Source #

IComonad (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IComonad

Methods

iextract :: forall (a0 :: k0 -> Type). Product a a0 ~~> a0 Source #

iduplicate :: forall (a0 :: k0 -> Type). Product a a0 ~~> Product a (Product a a0) Source #

iextend :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (Product a a0 ~~> b) -> Product a a0 ~~> Product a b Source #

Generic1 (Product f g :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Associated Types

type Rep1 (Product f g) :: k -> Type #

Methods

from1 :: forall (a :: k0). Product f g a -> Rep1 (Product f g) a #

to1 :: forall (a :: k0). Rep1 (Product f g) a -> Product f g a #

(Monad f, Monad g) => Monad (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

(>>=) :: Product f g a -> (a -> Product f g b) -> Product f g b #

(>>) :: Product f g a -> Product f g b -> Product f g b #

return :: a -> Product f g a #

(Functor f, Functor g) => Functor (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

fmap :: (a -> b) -> Product f g a -> Product f g b #

(<$) :: a -> Product f g b -> Product f g a #

(MonadFix f, MonadFix g) => MonadFix (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

mfix :: (a -> Product f g a) -> Product f g a #

(Applicative f, Applicative g) => Applicative (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

pure :: a -> Product f g a #

(<*>) :: Product f g (a -> b) -> Product f g a -> Product f g b #

liftA2 :: (a -> b -> c) -> Product f g a -> Product f g b -> Product f g c #

(*>) :: Product f g a -> Product f g b -> Product f g b #

(<*) :: Product f g a -> Product f g b -> Product f g a #

(Foldable f, Foldable g) => Foldable (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

fold :: Monoid m => Product f g m -> m #

foldMap :: Monoid m => (a -> m) -> Product f g a -> m #

foldMap' :: Monoid m => (a -> m) -> Product f g a -> m #

foldr :: (a -> b -> b) -> b -> Product f g a -> b #

foldr' :: (a -> b -> b) -> b -> Product f g a -> b #

foldl :: (b -> a -> b) -> b -> Product f g a -> b #

foldl' :: (b -> a -> b) -> b -> Product f g a -> b #

foldr1 :: (a -> a -> a) -> Product f g a -> a #

foldl1 :: (a -> a -> a) -> Product f g a -> a #

toList :: Product f g a -> [a] #

null :: Product f g a -> Bool #

length :: Product f g a -> Int #

elem :: Eq a => a -> Product f g a -> Bool #

maximum :: Ord a => Product f g a -> a #

minimum :: Ord a => Product f g a -> a #

sum :: Num a => Product f g a -> a #

product :: Num a => Product f g a -> a #

(Traversable f, Traversable g) => Traversable (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

traverse :: Applicative f0 => (a -> f0 b) -> Product f g a -> f0 (Product f g b) #

sequenceA :: Applicative f0 => Product f g (f0 a) -> f0 (Product f g a) #

mapM :: Monad m => (a -> m b) -> Product f g a -> m (Product f g b) #

sequence :: Monad m => Product f g (m a) -> m (Product f g a) #

(Eq1 f, Eq1 g) => Eq1 (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

liftEq :: (a -> b -> Bool) -> Product f g a -> Product f g b -> Bool #

(Ord1 f, Ord1 g) => Ord1 (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

liftCompare :: (a -> b -> Ordering) -> Product f g a -> Product f g b -> Ordering #

(Read1 f, Read1 g) => Read1 (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Product f g a) #

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Product f g a] #

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Product f g a) #

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Product f g a] #

(Show1 f, Show1 g) => Show1 (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Product f g a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Product f g a] -> ShowS #

(MonadZip f, MonadZip g) => MonadZip (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

mzip :: Product f g a -> Product f g b -> Product f g (a, b) #

mzipWith :: (a -> b -> c) -> Product f g a -> Product f g b -> Product f g c #

munzip :: Product f g (a, b) -> (Product f g a, Product f g b) #

(Alternative f, Alternative g) => Alternative (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

empty :: Product f g a #

(<|>) :: Product f g a -> Product f g a -> Product f g a #

some :: Product f g a -> Product f g [a] #

many :: Product f g a -> Product f g [a] #

(MonadPlus f, MonadPlus g) => MonadPlus (Product f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

mzero :: Product f g a #

mplus :: Product f g a -> Product f g a -> Product f g a #

(Eq1 f, Eq1 g, Eq a) => Eq (Product f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

(==) :: Product f g a -> Product f g a -> Bool #

(/=) :: Product f g a -> Product f g a -> Bool #

(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a), Data (g a)) => Data (Product f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g0. g0 -> c g0) -> Product f g a -> c (Product f g a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Product f g a) #

toConstr :: Product f g a -> Constr #

dataTypeOf :: Product f g a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Product f g a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Product f g a)) #

gmapT :: (forall b. Data b => b -> b) -> Product f g a -> Product f g a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Product f g a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Product f g a -> r #

gmapQ :: (forall d. Data d => d -> u) -> Product f g a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Product f g a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Product f g a -> m (Product f g a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Product f g a -> m (Product f g a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Product f g a -> m (Product f g a) #

(Ord1 f, Ord1 g, Ord a) => Ord (Product f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

compare :: Product f g a -> Product f g a -> Ordering #

(<) :: Product f g a -> Product f g a -> Bool #

(<=) :: Product f g a -> Product f g a -> Bool #

(>) :: Product f g a -> Product f g a -> Bool #

(>=) :: Product f g a -> Product f g a -> Bool #

max :: Product f g a -> Product f g a -> Product f g a #

min :: Product f g a -> Product f g a -> Product f g a #

(Read1 f, Read1 g, Read a) => Read (Product f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

readsPrec :: Int -> ReadS (Product f g a) #

readList :: ReadS [Product f g a] #

readPrec :: ReadPrec (Product f g a) #

readListPrec :: ReadPrec [Product f g a] #

(Show1 f, Show1 g, Show a) => Show (Product f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

showsPrec :: Int -> Product f g a -> ShowS #

show :: Product f g a -> String #

showList :: [Product f g a] -> ShowS #

Generic (Product f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Associated Types

type Rep (Product f g a) :: Type -> Type #

Methods

from :: Product f g a -> Rep (Product f g a) x #

to :: Rep (Product f g a) x -> Product f g a #

type Rep1 (Product f g :: k -> Type) 
Instance details

Defined in Data.Functor.Product

type Rep (Product f g a) 
Instance details

Defined in Data.Functor.Product

type Rep (Product f g a) = D1 ('MetaData "Product" "Data.Functor.Product" "base" 'False) (C1 ('MetaCons "Pair" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f a)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (g a))))

data Sum (f :: k -> Type) (g :: k -> Type) (a :: k) #

Lifted sum of functors.

Constructors

InL (f a) 
InR (g a) 

Instances

Instances details
IFunctor (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor

Methods

imap :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> b) -> Sum a a0 ~~> Sum a b Source #

IOrd2 a => IOrd (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

icompare :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => a0 ix -> a0 ix -> Ordering) -> Sum a a0 ix -> Sum a a0 ix -> Ordering Source #

IEq2 a => IEq (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

ieq :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => a0 ix -> a0 ix -> Bool) -> Sum a a0 ix -> Sum a a0 ix -> Bool Source #

IRead2 a => IRead (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

ireadPrec :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => ReadPrec (a0 ix)) -> ReadPrec (Sum a a0 ix) Source #

ireadsPrec :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => Int -> ReadS (a0 ix)) -> Int -> ReadS (Sum a a0 ix) Source #

IShow2 a => IShow (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.Classes

Methods

ishowsPrec :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => Int -> a0 ix -> ShowS) -> Int -> Sum a a0 ix -> ShowS Source #

ishow :: forall (ix :: k0) a0. SingI ix => (forall (ix :: k1). SingI ix => Int -> a0 ix -> ShowS) -> Sum a a0 ix -> String Source #

ITraversable (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.ITraversable

Methods

itraverse :: forall m (ix :: k0) a0 b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a0 ix -> m (b ix)) -> Sum a a0 ix -> m (Sum a b ix) Source #

IMonad (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IMonad

Methods

ipure :: forall (a0 :: k0 -> Type). a0 ~~> Sum a a0 Source #

ijoin :: forall (a0 :: k0 -> Type). Sum a (Sum a a0) ~~> Sum a a0 Source #

ibind :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> Sum a b) -> Sum a a0 ~~> Sum a b Source #

Generic1 (Sum f g :: k -> Type)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Associated Types

type Rep1 (Sum f g) :: k -> Type #

Methods

from1 :: forall (a :: k0). Sum f g a -> Rep1 (Sum f g) a #

to1 :: forall (a :: k0). Rep1 (Sum f g) a -> Sum f g a #

(Functor f, Functor g) => Functor (Sum f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

fmap :: (a -> b) -> Sum f g a -> Sum f g b #

(<$) :: a -> Sum f g b -> Sum f g a #

(Foldable f, Foldable g) => Foldable (Sum f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

fold :: Monoid m => Sum f g m -> m #

foldMap :: Monoid m => (a -> m) -> Sum f g a -> m #

foldMap' :: Monoid m => (a -> m) -> Sum f g a -> m #

foldr :: (a -> b -> b) -> b -> Sum f g a -> b #

foldr' :: (a -> b -> b) -> b -> Sum f g a -> b #

foldl :: (b -> a -> b) -> b -> Sum f g a -> b #

foldl' :: (b -> a -> b) -> b -> Sum f g a -> b #

foldr1 :: (a -> a -> a) -> Sum f g a -> a #

foldl1 :: (a -> a -> a) -> Sum f g a -> a #

toList :: Sum f g a -> [a] #

null :: Sum f g a -> Bool #

length :: Sum f g a -> Int #

elem :: Eq a => a -> Sum f g a -> Bool #

maximum :: Ord a => Sum f g a -> a #

minimum :: Ord a => Sum f g a -> a #

sum :: Num a => Sum f g a -> a #

product :: Num a => Sum f g a -> a #

(Traversable f, Traversable g) => Traversable (Sum f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

traverse :: Applicative f0 => (a -> f0 b) -> Sum f g a -> f0 (Sum f g b) #

sequenceA :: Applicative f0 => Sum f g (f0 a) -> f0 (Sum f g a) #

mapM :: Monad m => (a -> m b) -> Sum f g a -> m (Sum f g b) #

sequence :: Monad m => Sum f g (m a) -> m (Sum f g a) #

(Eq1 f, Eq1 g) => Eq1 (Sum f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

liftEq :: (a -> b -> Bool) -> Sum f g a -> Sum f g b -> Bool #

(Ord1 f, Ord1 g) => Ord1 (Sum f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

liftCompare :: (a -> b -> Ordering) -> Sum f g a -> Sum f g b -> Ordering #

(Read1 f, Read1 g) => Read1 (Sum f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

liftReadsPrec :: (Int -> ReadS a) -> ReadS [a] -> Int -> ReadS (Sum f g a) #

liftReadList :: (Int -> ReadS a) -> ReadS [a] -> ReadS [Sum f g a] #

liftReadPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec (Sum f g a) #

liftReadListPrec :: ReadPrec a -> ReadPrec [a] -> ReadPrec [Sum f g a] #

(Show1 f, Show1 g) => Show1 (Sum f g)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Sum f g a -> ShowS #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Sum f g a] -> ShowS #

(Eq1 f, Eq1 g, Eq a) => Eq (Sum f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

(==) :: Sum f g a -> Sum f g a -> Bool #

(/=) :: Sum f g a -> Sum f g a -> Bool #

(Typeable a, Typeable f, Typeable g, Typeable k, Data (f a), Data (g a)) => Data (Sum f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g0. g0 -> c g0) -> Sum f g a -> c (Sum f g a) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Sum f g a) #

toConstr :: Sum f g a -> Constr #

dataTypeOf :: Sum f g a -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Sum f g a)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Sum f g a)) #

gmapT :: (forall b. Data b => b -> b) -> Sum f g a -> Sum f g a #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Sum f g a -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Sum f g a -> r #

gmapQ :: (forall d. Data d => d -> u) -> Sum f g a -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Sum f g a -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Sum f g a -> m (Sum f g a) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum f g a -> m (Sum f g a) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Sum f g a -> m (Sum f g a) #

(Ord1 f, Ord1 g, Ord a) => Ord (Sum f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

compare :: Sum f g a -> Sum f g a -> Ordering #

(<) :: Sum f g a -> Sum f g a -> Bool #

(<=) :: Sum f g a -> Sum f g a -> Bool #

(>) :: Sum f g a -> Sum f g a -> Bool #

(>=) :: Sum f g a -> Sum f g a -> Bool #

max :: Sum f g a -> Sum f g a -> Sum f g a #

min :: Sum f g a -> Sum f g a -> Sum f g a #

(Read1 f, Read1 g, Read a) => Read (Sum f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

readsPrec :: Int -> ReadS (Sum f g a) #

readList :: ReadS [Sum f g a] #

readPrec :: ReadPrec (Sum f g a) #

readListPrec :: ReadPrec [Sum f g a] #

(Show1 f, Show1 g, Show a) => Show (Sum f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

showsPrec :: Int -> Sum f g a -> ShowS #

show :: Sum f g a -> String #

showList :: [Sum f g a] -> ShowS #

Generic (Sum f g a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Associated Types

type Rep (Sum f g a) :: Type -> Type #

Methods

from :: Sum f g a -> Rep (Sum f g a) x #

to :: Rep (Sum f g a) x -> Sum f g a #

type Rep1 (Sum f g :: k -> Type) 
Instance details

Defined in Data.Functor.Sum

type Rep (Sum f g a) 
Instance details

Defined in Data.Functor.Sum

class IFunctor f => IComonad f where Source #

Comonoid in the category of dependent endofunctors

Minimal complete definition

iextract, (iduplicate | iextend)

Methods

iextract :: f a ~~> a Source #

iduplicate :: f a ~~> f (f a) Source #

iextend :: (f a ~~> b) -> f a ~~> f b Source #

Instances

Instances details
IComonad (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

iextract :: forall (a :: k0 -> Type). IIdentity a ~~> a Source #

iduplicate :: forall (a :: k0 -> Type). IIdentity a ~~> IIdentity (IIdentity a) Source #

iextend :: forall (a :: k0 -> Type) (b :: k0 -> Type). (IIdentity a ~~> b) -> IIdentity a ~~> IIdentity b Source #

IComonad (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IComonad

Methods

iextract :: forall (a0 :: k0 -> Type). Product a a0 ~~> a0 Source #

iduplicate :: forall (a0 :: k0 -> Type). Product a a0 ~~> Product a (Product a a0) Source #

iextend :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (Product a a0 ~~> b) -> Product a a0 ~~> Product a b Source #

IFunctor f => IComonad (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

iextract :: forall (a :: k0 -> Type). ICofree f a ~~> a Source #

iduplicate :: forall (a :: k0 -> Type). ICofree f a ~~> ICofree f (ICofree f a) Source #

iextend :: forall (a :: k0 -> Type) (b :: k0 -> Type). (ICofree f a ~~> b) -> ICofree f a ~~> ICofree f b Source #

type (~~>) a b = forall ix. SingI ix => a ix -> b ix infixr 4 Source #

Indexed function type

class IFunctor f where Source #

Functor in the category of dependent types

Methods

imap :: (a ~~> b) -> f a ~~> f b Source #

Instances

Instances details
IFunctor (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> IIdentity a ~~> IIdentity b Source #

IFunctor (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor

Methods

imap :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> b) -> Product a a0 ~~> Product a b Source #

IFunctor (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor

Methods

imap :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> b) -> Sum a a0 ~~> Sum a b Source #

IFunctor f => IFunctor (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> IFree f a ~~> IFree f b Source #

IFunctor f => IFunctor (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> ICofree f a ~~> ICofree f b Source #

data ICofree f a ix Source #

Cofree IComonad

Constructors

(a ix) ::< (f (ICofree f a) ix) infixr 5 

Instances

Instances details
IFunctor f => IFunctor (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> ICofree f a ~~> ICofree f b Source #

IOrd f => IOrd (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

icompare :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => a ix -> a ix -> Ordering) -> ICofree f a ix -> ICofree f a ix -> Ordering Source #

IEq f => IEq (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

ieq :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => a ix -> a ix -> Bool) -> ICofree f a ix -> ICofree f a ix -> Bool Source #

IRead f => IRead (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

ireadPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => ReadPrec (a ix)) -> ReadPrec (ICofree f a ix) Source #

ireadsPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> ReadS (a ix)) -> Int -> ReadS (ICofree f a ix) Source #

IShow f => IShow (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

ishowsPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> a ix -> ShowS) -> Int -> ICofree f a ix -> ShowS Source #

ishow :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> a ix -> ShowS) -> ICofree f a ix -> String Source #

ITraversable f => ITraversable (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

itraverse :: forall m (ix :: k0) a b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a ix -> m (b ix)) -> ICofree f a ix -> m (ICofree f b ix) Source #

IFunctor f => IComonad (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

iextract :: forall (a :: k0 -> Type). ICofree f a ~~> a Source #

iduplicate :: forall (a :: k0 -> Type). ICofree f a ~~> ICofree f (ICofree f a) Source #

iextend :: forall (a :: k0 -> Type) (b :: k0 -> Type). (ICofree f a ~~> b) -> ICofree f a ~~> ICofree f b Source #

Generic1 (ICofree f a :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Associated Types

type Rep1 (ICofree f a) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). ICofree f a a0 -> Rep1 (ICofree f a) a0 #

to1 :: forall (a0 :: k0). Rep1 (ICofree f a) a0 -> ICofree f a a0 #

(IEq f, IEq2 a, SingI ix) => Eq (ICofree f a ix) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

(==) :: ICofree f a ix -> ICofree f a ix -> Bool #

(/=) :: ICofree f a ix -> ICofree f a ix -> Bool #

(IOrd f, IOrd2 a, SingI ix) => Ord (ICofree f a ix) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

compare :: ICofree f a ix -> ICofree f a ix -> Ordering #

(<) :: ICofree f a ix -> ICofree f a ix -> Bool #

(<=) :: ICofree f a ix -> ICofree f a ix -> Bool #

(>) :: ICofree f a ix -> ICofree f a ix -> Bool #

(>=) :: ICofree f a ix -> ICofree f a ix -> Bool #

max :: ICofree f a ix -> ICofree f a ix -> ICofree f a ix #

min :: ICofree f a ix -> ICofree f a ix -> ICofree f a ix #

(IRead f, IRead2 a, SingI ix) => Read (ICofree f a ix) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

readsPrec :: Int -> ReadS (ICofree f a ix) #

readList :: ReadS [ICofree f a ix] #

readPrec :: ReadPrec (ICofree f a ix) #

readListPrec :: ReadPrec [ICofree f a ix] #

(IShow f, IShow2 a, SingI ix) => Show (ICofree f a ix) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

showsPrec :: Int -> ICofree f a ix -> ShowS #

show :: ICofree f a ix -> String #

showList :: [ICofree f a ix] -> ShowS #

Generic (ICofree f a ix) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Associated Types

type Rep (ICofree f a ix) :: Type -> Type #

Methods

from :: ICofree f a ix -> Rep (ICofree f a ix) x #

to :: Rep (ICofree f a ix) x -> ICofree f a ix #

type Rep1 (ICofree f a :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

type Rep1 (ICofree f a :: k -> Type) = D1 ('MetaData "ICofree" "Data.IFunctor.ICofree" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'False) (C1 ('MetaCons "::<" ('InfixI 'RightAssociative 5) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 a) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (f (ICofree f a)))))
type Rep (ICofree f a ix) Source # 
Instance details

Defined in Data.IFunctor.ICofree

type Rep (ICofree f a ix) = D1 ('MetaData "ICofree" "Data.IFunctor.ICofree" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'False) (C1 ('MetaCons "::<" ('InfixI 'RightAssociative 5) 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a ix)) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (ICofree f a) ix))))

data IFree f a ix Source #

Free IMonad

Constructors

IPure (a ix) 
IFree (f (IFree f a) ix) 

Instances

Instances details
IFunctor f => IFunctor (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> IFree f a ~~> IFree f b Source #

IOrd f => IOrd (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

icompare :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => a ix -> a ix -> Ordering) -> IFree f a ix -> IFree f a ix -> Ordering Source #

IEq f => IEq (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

ieq :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => a ix -> a ix -> Bool) -> IFree f a ix -> IFree f a ix -> Bool Source #

IRead f => IRead (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

ireadPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => ReadPrec (a ix)) -> ReadPrec (IFree f a ix) Source #

ireadsPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> ReadS (a ix)) -> Int -> ReadS (IFree f a ix) Source #

IShow f => IShow (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

ishowsPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> a ix -> ShowS) -> Int -> IFree f a ix -> ShowS Source #

ishow :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> a ix -> ShowS) -> IFree f a ix -> String Source #

ITraversable f => ITraversable (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

itraverse :: forall m (ix :: k0) a b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a ix -> m (b ix)) -> IFree f a ix -> m (IFree f b ix) Source #

IFunctor f => IMonad (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

ipure :: forall (a :: k0 -> Type). a ~~> IFree f a Source #

ijoin :: forall (a :: k0 -> Type). IFree f (IFree f a) ~~> IFree f a Source #

ibind :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> IFree f b) -> IFree f a ~~> IFree f b Source #

Generic1 (IFree f a :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Associated Types

type Rep1 (IFree f a) :: k -> Type #

Methods

from1 :: forall (a0 :: k0). IFree f a a0 -> Rep1 (IFree f a) a0 #

to1 :: forall (a0 :: k0). Rep1 (IFree f a) a0 -> IFree f a a0 #

(IEq f, IEq2 a, SingI ix) => Eq (IFree f a ix) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

(==) :: IFree f a ix -> IFree f a ix -> Bool #

(/=) :: IFree f a ix -> IFree f a ix -> Bool #

(IOrd f, IOrd2 a, SingI ix) => Ord (IFree f a ix) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

compare :: IFree f a ix -> IFree f a ix -> Ordering #

(<) :: IFree f a ix -> IFree f a ix -> Bool #

(<=) :: IFree f a ix -> IFree f a ix -> Bool #

(>) :: IFree f a ix -> IFree f a ix -> Bool #

(>=) :: IFree f a ix -> IFree f a ix -> Bool #

max :: IFree f a ix -> IFree f a ix -> IFree f a ix #

min :: IFree f a ix -> IFree f a ix -> IFree f a ix #

(IRead f, IRead2 a, SingI ix) => Read (IFree f a ix) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

readsPrec :: Int -> ReadS (IFree f a ix) #

readList :: ReadS [IFree f a ix] #

readPrec :: ReadPrec (IFree f a ix) #

readListPrec :: ReadPrec [IFree f a ix] #

(IShow f, IShow2 a, SingI ix) => Show (IFree f a ix) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

showsPrec :: Int -> IFree f a ix -> ShowS #

show :: IFree f a ix -> String #

showList :: [IFree f a ix] -> ShowS #

Generic (IFree f a ix) Source # 
Instance details

Defined in Data.IFunctor.IFree

Associated Types

type Rep (IFree f a ix) :: Type -> Type #

Methods

from :: IFree f a ix -> Rep (IFree f a ix) x #

to :: Rep (IFree f a ix) x -> IFree f a ix #

type Rep1 (IFree f a :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

type Rep1 (IFree f a :: k -> Type) = D1 ('MetaData "IFree" "Data.IFunctor.IFree" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'False) (C1 ('MetaCons "IPure" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 a)) :+: C1 ('MetaCons "IFree" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 (f (IFree f a)))))
type Rep (IFree f a ix) Source # 
Instance details

Defined in Data.IFunctor.IFree

type Rep (IFree f a ix) = D1 ('MetaData "IFree" "Data.IFunctor.IFree" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'False) (C1 ('MetaCons "IPure" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (a ix))) :+: C1 ('MetaCons "IFree" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f (IFree f a) ix))))

data IIdentity f ix Source #

Constructors

IIdentity 

Fields

Instances

Instances details
IFunctor (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

imap :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> b) -> IIdentity a ~~> IIdentity b Source #

IOrd (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

icompare :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => a ix -> a ix -> Ordering) -> IIdentity a ix -> IIdentity a ix -> Ordering Source #

IEq (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

ieq :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => a ix -> a ix -> Bool) -> IIdentity a ix -> IIdentity a ix -> Bool Source #

IRead (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

ireadPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => ReadPrec (a ix)) -> ReadPrec (IIdentity a ix) Source #

ireadsPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> ReadS (a ix)) -> Int -> ReadS (IIdentity a ix) Source #

IShow (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

ishowsPrec :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> a ix -> ShowS) -> Int -> IIdentity a ix -> ShowS Source #

ishow :: forall (ix :: k0) a. SingI ix => (forall (ix :: k1). SingI ix => Int -> a ix -> ShowS) -> IIdentity a ix -> String Source #

ITraversable (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

itraverse :: forall m (ix :: k0) a b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a ix -> m (b ix)) -> IIdentity a ix -> m (IIdentity b ix) Source #

IComonad (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

iextract :: forall (a :: k0 -> Type). IIdentity a ~~> a Source #

iduplicate :: forall (a :: k0 -> Type). IIdentity a ~~> IIdentity (IIdentity a) Source #

iextend :: forall (a :: k0 -> Type) (b :: k0 -> Type). (IIdentity a ~~> b) -> IIdentity a ~~> IIdentity b Source #

IMonad (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

ipure :: forall (a :: k0 -> Type). a ~~> IIdentity a Source #

ijoin :: forall (a :: k0 -> Type). IIdentity (IIdentity a) ~~> IIdentity a Source #

ibind :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> IIdentity b) -> IIdentity a ~~> IIdentity b Source #

Generic1 (IIdentity f :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Associated Types

type Rep1 (IIdentity f) :: k -> Type #

Methods

from1 :: forall (a :: k0). IIdentity f a -> Rep1 (IIdentity f) a #

to1 :: forall (a :: k0). Rep1 (IIdentity f) a -> IIdentity f a #

(IEq2 f, SingI ix) => Eq (IIdentity f ix) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

(==) :: IIdentity f ix -> IIdentity f ix -> Bool #

(/=) :: IIdentity f ix -> IIdentity f ix -> Bool #

(Typeable ix, Typeable f, Typeable k, Data (f ix)) => Data (IIdentity f ix) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> IIdentity f ix -> c (IIdentity f ix) #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (IIdentity f ix) #

toConstr :: IIdentity f ix -> Constr #

dataTypeOf :: IIdentity f ix -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (IIdentity f ix)) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (IIdentity f ix)) #

gmapT :: (forall b. Data b => b -> b) -> IIdentity f ix -> IIdentity f ix #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> IIdentity f ix -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> IIdentity f ix -> r #

gmapQ :: (forall d. Data d => d -> u) -> IIdentity f ix -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> IIdentity f ix -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> IIdentity f ix -> m (IIdentity f ix) #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> IIdentity f ix -> m (IIdentity f ix) #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> IIdentity f ix -> m (IIdentity f ix) #

(IOrd2 f, SingI ix) => Ord (IIdentity f ix) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

compare :: IIdentity f ix -> IIdentity f ix -> Ordering #

(<) :: IIdentity f ix -> IIdentity f ix -> Bool #

(<=) :: IIdentity f ix -> IIdentity f ix -> Bool #

(>) :: IIdentity f ix -> IIdentity f ix -> Bool #

(>=) :: IIdentity f ix -> IIdentity f ix -> Bool #

max :: IIdentity f ix -> IIdentity f ix -> IIdentity f ix #

min :: IIdentity f ix -> IIdentity f ix -> IIdentity f ix #

(IRead2 f, SingI ix) => Read (IIdentity f ix) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

(IShow2 f, SingI ix) => Show (IIdentity f ix) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

showsPrec :: Int -> IIdentity f ix -> ShowS #

show :: IIdentity f ix -> String #

showList :: [IIdentity f ix] -> ShowS #

Generic (IIdentity f ix) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Associated Types

type Rep (IIdentity f ix) :: Type -> Type #

Methods

from :: IIdentity f ix -> Rep (IIdentity f ix) x #

to :: Rep (IIdentity f ix) x -> IIdentity f ix #

type Rep1 (IIdentity f :: k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

type Rep1 (IIdentity f :: k -> Type) = D1 ('MetaData "IIdentity" "Data.IFunctor.IIdentity" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'False) (C1 ('MetaCons "IIdentity" 'PrefixI 'True) (S1 ('MetaSel ('Just "runIIdentity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 f)))
type Rep (IIdentity f ix) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

type Rep (IIdentity f ix) = D1 ('MetaData "IIdentity" "Data.IFunctor.IIdentity" "recursion-schemes-ix-0.1.0.0-LBKNYYUUm79APWA4D6g9GS" 'False) (C1 ('MetaCons "IIdentity" 'PrefixI 'True) (S1 ('MetaSel ('Just "runIIdentity") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f ix))))

class IFunctor f => IMonad f where Source #

Minimal complete definition

ipure, (ijoin | ibind)

Methods

ipure :: a ~~> f a Source #

ijoin :: f (f a) ~~> f a Source #

ibind :: (a ~~> f b) -> f a ~~> f b Source #

Instances

Instances details
IMonad (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

ipure :: forall (a :: k0 -> Type). a ~~> IIdentity a Source #

ijoin :: forall (a :: k0 -> Type). IIdentity (IIdentity a) ~~> IIdentity a Source #

ibind :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> IIdentity b) -> IIdentity a ~~> IIdentity b Source #

IMonad (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IMonad

Methods

ipure :: forall (a0 :: k0 -> Type). a0 ~~> Sum a a0 Source #

ijoin :: forall (a0 :: k0 -> Type). Sum a (Sum a a0) ~~> Sum a a0 Source #

ibind :: forall (a0 :: k0 -> Type) (b :: k0 -> Type). (a0 ~~> Sum a b) -> Sum a a0 ~~> Sum a b Source #

IFunctor f => IMonad (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

ipure :: forall (a :: k0 -> Type). a ~~> IFree f a Source #

ijoin :: forall (a :: k0 -> Type). IFree f (IFree f a) ~~> IFree f a Source #

ibind :: forall (a :: k0 -> Type) (b :: k0 -> Type). (a ~~> IFree f b) -> IFree f a ~~> IFree f b Source #

class IFunctor f => ITraversable f where Source #

Methods

itraverse :: (Applicative m, SingI ix) => (forall ix. SingI ix => a ix -> m (b ix)) -> f a ix -> m (f b ix) Source #

Instances

Instances details
ITraversable (IIdentity :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IIdentity

Methods

itraverse :: forall m (ix :: k0) a b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a ix -> m (b ix)) -> IIdentity a ix -> m (IIdentity b ix) Source #

ITraversable (Product a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.ITraversable

Methods

itraverse :: forall m (ix :: k0) a0 b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a0 ix -> m (b ix)) -> Product a a0 ix -> m (Product a b ix) Source #

ITraversable (Sum a :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.ITraversable

Methods

itraverse :: forall m (ix :: k0) a0 b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a0 ix -> m (b ix)) -> Sum a a0 ix -> m (Sum a b ix) Source #

ITraversable f => ITraversable (IFree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.IFree

Methods

itraverse :: forall m (ix :: k0) a b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a ix -> m (b ix)) -> IFree f a ix -> m (IFree f b ix) Source #

ITraversable f => ITraversable (ICofree f :: (k -> Type) -> k -> Type) Source # 
Instance details

Defined in Data.IFunctor.ICofree

Methods

itraverse :: forall m (ix :: k0) a b. (Applicative m, SingI ix) => (forall (ix :: k1). SingI ix => a ix -> m (b ix)) -> ICofree f a ix -> m (ICofree f b ix) Source #

imapDefault :: ITraversable f => (a ~~> b) -> f a ~~> f b Source #

Default imap for deriving IFunctor

class SingI (a :: k) where #

Methods

sing :: Sing a #