| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Control.Monad.Indexed.Cont
Synopsis
- class Stacked m => Shifty (m :: k -> Type -> Type -> Type) where
- shift :: forall a r' (r :: k) k1. ((a -> r') -> m r k1 k1) -> m r r' a
- class Stacked (m :: k -> Type -> Type -> Type) where
- shift_ :: forall r' (r :: k) r''. (r' -> m r r'' r'') -> m r r' ()
- stack :: (Applicative m, Stacked m) => (j -> i) -> m i j ()
- pop :: (Applicative m, Shifty m) => m (a -> i) i a
- pop_ :: (Applicative m, Stacked m) => m (a -> i) i ()
- push :: (Applicative m, Stacked m) => a -> m i (a -> i) ()
- (@) :: (Applicative m, Stacked m) => m (a -> i) j b -> a -> m i j b
- newtype ContW (w :: Type -> Type) r r' a = ContW {
- runContW :: w (a -> r') -> r
- shift0 :: Comonad w => (w (a -> r') -> ContW w r k k) -> ContW w r r' a
- yield :: Comonad w => (w (a -> r) -> r) -> ContW w r r a
- yield_ :: Comonad w => (w r -> r) -> ContW w r r ()
- abort :: (Applicative m, Shifty m) => r -> m r r' a
- capture :: Comonad w => ContW w b r' r' -> ContW w r r (w b)
- handle :: forall (w :: Type -> Type) k r r' a. Comonad w => ContW (StoreT k w) r r' a -> ContW w k r' a -> ContW w r r' a
- pullback :: Comonad w => (forall x. w x -> v x) -> ContW v r r' a -> ContW w r r' a
Abstract delimited control
stack :: (Applicative m, Stacked m) => (j -> i) -> m i j () Source #
pop :: (Applicative m, Shifty m) => m (a -> i) i a Source #
pop_ :: (Applicative m, Stacked m) => m (a -> i) i () Source #
push :: (Applicative m, Stacked m) => a -> m i (a -> i) () Source #
(@) :: (Applicative m, Stacked m) => m (a -> i) j b -> a -> m i j b infixl 9 Source #
Comonad-to-indexed-monad transformer
newtype ContW (w :: Type -> Type) r r' a Source #
Instances
| Comonad w => Applicative (ContW w :: Type -> Type -> Type -> Type) Source # | |
Defined in Control.Monad.Indexed.Cont Methods pure :: a -> ContW w i i a Source # (<*>) :: ContW w i j (a -> b) -> ContW w j k1 a -> ContW w i k1 b Source # liftA2 :: (a -> b -> c) -> ContW w i j a -> ContW w j k1 b -> ContW w i k1 c Source # (*>) :: ContW w i j a -> ContW w j k1 b -> ContW w i k1 b Source # (<*) :: ContW w i j a -> ContW w j k1 b -> ContW w i k1 a Source # | |
| Comonad w => Monad (ContW w :: Type -> Type -> Type -> Type) Source # | |
| Comonad w => Shifty (ContW w :: Type -> Type -> Type -> Type) Source # | |
| Comonad w => Stacked (ContW w :: Type -> Type -> Type -> Type) Source # | |
| Comonad w => Applicative (ContW w r r) Source # | |
Defined in Control.Monad.Indexed.Cont | |
| Functor w => Functor (ContW w r r') Source # | |
| Comonad w => Monad (ContW w r r) Source # | |
Experimental combinators (subject to radical change)
abort :: (Applicative m, Shifty m) => r -> m r r' a Source #