Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Functor.Indexed
Synopsis
- newtype IxWrap f i j a = IxWrap {
- unIxWrap :: f a
- class (forall i j. Functor (ɯ i j)) => Cobind ɯ where
- class Apply m => Bind m where
- class (forall i j. Functor (p i j)) => Apply p where
- (<**>) :: Apply p => p i j a -> p j k (a -> b) -> p i k b
- apIxMonad :: (Bind m, forall k. Applicative (m k k)) => m i j (a -> b) -> m j k a -> m i k b
- (=>>) :: Cobind ɯ => ɯ i k a -> (ɯ j k a -> b) -> ɯ i j b
- (=>=) :: Cobind ɯ => (ɯ j k a -> b) -> (ɯ i j b -> c) -> ɯ i k a -> c
- (=<=) :: Cobind ɯ => (ɯ i j b -> c) -> (ɯ j k a -> b) -> ɯ i k a -> c
- (>=>) :: Bind m => (a -> m i j b) -> (b -> m j k c) -> a -> m i k c
- (<=<) :: Bind m => (b -> m j k c) -> (a -> m i j b) -> a -> m i k c
- (=<<) :: Bind m => (a -> m j k b) -> m i j a -> m i k b
- pure :: Applicative f => a -> f a
- copure :: Comonad ɯ => ɯ a -> a
Documentation
newtype IxWrap f i j a Source #
Instances
Comonad ɯ => Cobind (IxWrap ɯ :: k -> k -> Type -> Type) Source # | |
Monad m => Bind (IxWrap m :: k -> k -> Type -> Type) Source # | |
Applicative p => Apply (IxWrap p :: k -> k -> Type -> Type) Source # | |
Defined in Data.Functor.Indexed Methods (<*>) :: forall (i :: k0) (j :: k0) a b (k1 :: k0). IxWrap p i j (a -> b) -> IxWrap p j k1 a -> IxWrap p i k1 b Source # (*>) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. IxWrap p i j a -> IxWrap p j k1 b -> IxWrap p i k1 b Source # (<*) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. IxWrap p i j a -> IxWrap p j k1 b -> IxWrap p i k1 a Source # liftA2 :: forall a b c (i :: k0) (j :: k0) (k1 :: k0). (a -> b -> c) -> IxWrap p i j a -> IxWrap p j k1 b -> IxWrap p i k1 c Source # | |
Monad m => Monad (IxWrap m i j) Source # | |
Functor f => Functor (IxWrap f i j) Source # | |
Applicative p => Applicative (IxWrap p i j) Source # | |
Defined in Data.Functor.Indexed | |
Comonad ɯ => Comonad (IxWrap ɯ i j) Source # | |
class (forall i j. Functor (ɯ i j)) => Cobind ɯ where Source #
Methods
cut :: ɯ i k a -> ɯ i j (ɯ j k a) Source #
(<<=) :: (ɯ j k a -> b) -> ɯ i k a -> ɯ i j b infixr 1 Source #
class Apply m => Bind m where Source #
Methods
join :: m i j (m j k a) -> m i k a Source #
(>>=) :: m i j a -> (a -> m j k b) -> m i k b infixl 1 Source #
class (forall i j. Functor (p i j)) => Apply p where Source #
Functors into which binary (and thus n
-ary) functions can be lifted
Laws:
Relations of methods:
Methods
(<*>) :: p i j (a -> b) -> p j k a -> p i k b infixl 4 Source #
(*>) :: p i j a -> p j k b -> p i k b infixl 4 Source #
(<*) :: p i j a -> p j k b -> p i k a infixl 4 Source #
liftA2 :: (a -> b -> c) -> p i j a -> p j k b -> p i k c Source #
Instances
Apply (ContT f :: k -> k -> Type -> Type) Source # | |
Defined in Control.Monad.Indexed.Trans.Cont Methods (<*>) :: forall (i :: k0) (j :: k0) a b (k1 :: k0). ContT f i j (a -> b) -> ContT f j k1 a -> ContT f i k1 b Source # (*>) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. ContT f i j a -> ContT f j k1 b -> ContT f i k1 b Source # (<*) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. ContT f i j a -> ContT f j k1 b -> ContT f i k1 a Source # liftA2 :: forall a b c (i :: k0) (j :: k0) (k1 :: k0). (a -> b -> c) -> ContT f i j a -> ContT f j k1 b -> ContT f i k1 c Source # | |
Applicative p => Apply (IxWrap p :: k -> k -> Type -> Type) Source # | |
Defined in Data.Functor.Indexed Methods (<*>) :: forall (i :: k0) (j :: k0) a b (k1 :: k0). IxWrap p i j (a -> b) -> IxWrap p j k1 a -> IxWrap p i k1 b Source # (*>) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. IxWrap p i j a -> IxWrap p j k1 b -> IxWrap p i k1 b Source # (<*) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. IxWrap p i j a -> IxWrap p j k1 b -> IxWrap p i k1 a Source # liftA2 :: forall a b c (i :: k0) (j :: k0) (k1 :: k0). (a -> b -> c) -> IxWrap p i j a -> IxWrap p j k1 b -> IxWrap p i k1 c Source # | |
(Semigroupoid κ, Applicative p) => Apply (WriterT κ p :: k -> k -> Type -> Type) Source # | |
Defined in Control.Monad.Indexed.Trans.Writer Methods (<*>) :: forall (i :: k0) (j :: k0) a b (k1 :: k0). WriterT κ p i j (a -> b) -> WriterT κ p j k1 a -> WriterT κ p i k1 b Source # (*>) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. WriterT κ p i j a -> WriterT κ p j k1 b -> WriterT κ p i k1 b Source # (<*) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. WriterT κ p i j a -> WriterT κ p j k1 b -> WriterT κ p i k1 a Source # liftA2 :: forall a b c (i :: k0) (j :: k0) (k1 :: k0). (a -> b -> c) -> WriterT κ p i j a -> WriterT κ p j k1 b -> WriterT κ p i k1 c Source # | |
Semigroupoid κ => Apply (Const κ :: k -> k -> Type -> Type) Source # | |
Defined in Data.Functor.Indexed.Const Methods (<*>) :: forall (i :: k0) (j :: k0) a b (k1 :: k0). Const κ i j (a -> b) -> Const κ j k1 a -> Const κ i k1 b Source # (*>) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. Const κ i j a -> Const κ j k1 b -> Const κ i k1 b Source # (<*) :: forall (i :: k0) (j :: k0) a (k1 :: k0) b. Const κ i j a -> Const κ j k1 b -> Const κ i k1 a Source # liftA2 :: forall a b c (i :: k0) (j :: k0) (k1 :: k0). (a -> b -> c) -> Const κ i j a -> Const κ j k1 b -> Const κ i k1 c Source # | |
Monad m => Apply (StateT m :: Type -> Type -> Type -> Type) Source # | |
Defined in Control.Monad.Indexed.Trans.State Methods (<*>) :: forall (i :: k) (j :: k) a b (k :: k). StateT m i j (a -> b) -> StateT m j k a -> StateT m i k b Source # (*>) :: forall (i :: k) (j :: k) a (k :: k) b. StateT m i j a -> StateT m j k b -> StateT m i k b Source # (<*) :: forall (i :: k) (j :: k) a (k :: k) b. StateT m i j a -> StateT m j k b -> StateT m i k a Source # liftA2 :: forall a b c (i :: k) (j :: k) (k :: k). (a -> b -> c) -> StateT m i j a -> StateT m j k b -> StateT m i k c Source # | |
Applicative p => Apply (CostateT p :: Type -> Type -> Type -> Type) Source # | |
Defined in Control.Comonad.Indexed.Trans.Costate Methods (<*>) :: forall (i :: k) (j :: k) a b (k :: k). CostateT p i j (a -> b) -> CostateT p j k a -> CostateT p i k b Source # (*>) :: forall (i :: k) (j :: k) a (k :: k) b. CostateT p i j a -> CostateT p j k b -> CostateT p i k b Source # (<*) :: forall (i :: k) (j :: k) a (k :: k) b. CostateT p i j a -> CostateT p j k b -> CostateT p i k a Source # liftA2 :: forall a b c (i :: k) (j :: k) (k :: k). (a -> b -> c) -> CostateT p i j a -> CostateT p j k b -> CostateT p i k c Source # |
apIxMonad :: (Bind m, forall k. Applicative (m k k)) => m i j (a -> b) -> m j k a -> m i k b Source #
pure :: Applicative f => a -> f a #
Lift a value.