data-effects-core-0.2.0.0: A basic framework for effect systems based on effects represented by GADTs.
Copyright(c) 2023-2024 Sayo Koyoneda
LicenseMPL-2.0 (see the file LICENSE)
Maintainer[email protected]
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageGHC2021

Data.Effect.Key

Description

 
Synopsis

Documentation

newtype Key (key :: k) (ins :: EffectF) a Source #

Keyed first-order effect.

Constructors

Key 

Fields

Instances

Instances details
Foldable ins => Foldable (Key key ins) Source # 
Instance details

Defined in Data.Effect.Key

Methods

fold :: Monoid m => Key key ins m -> m #

foldMap :: Monoid m => (a -> m) -> Key key ins a -> m #

foldMap' :: Monoid m => (a -> m) -> Key key ins a -> m #

foldr :: (a -> b -> b) -> b -> Key key ins a -> b #

foldr' :: (a -> b -> b) -> b -> Key key ins a -> b #

foldl :: (b -> a -> b) -> b -> Key key ins a -> b #

foldl' :: (b -> a -> b) -> b -> Key key ins a -> b #

foldr1 :: (a -> a -> a) -> Key key ins a -> a #

foldl1 :: (a -> a -> a) -> Key key ins a -> a #

toList :: Key key ins a -> [a] #

null :: Key key ins a -> Bool #

length :: Key key ins a -> Int #

elem :: Eq a => a -> Key key ins a -> Bool #

maximum :: Ord a => Key key ins a -> a #

minimum :: Ord a => Key key ins a -> a #

sum :: Num a => Key key ins a -> a #

product :: Num a => Key key ins a -> a #

Traversable ins => Traversable (Key key ins) Source # 
Instance details

Defined in Data.Effect.Key

Methods

traverse :: Applicative f => (a -> f b) -> Key key ins a -> f (Key key ins b) #

sequenceA :: Applicative f => Key key ins (f a) -> f (Key key ins a) #

mapM :: Monad m => (a -> m b) -> Key key ins a -> m (Key key ins b) #

sequence :: Monad m => Key key ins (m a) -> m (Key key ins a) #

Functor ins => Functor (Key key ins) Source # 
Instance details

Defined in Data.Effect.Key

Methods

fmap :: (a -> b) -> Key key ins a -> Key key ins b #

(<$) :: a -> Key key ins b -> Key key ins a #

type (#>) = Key :: k -> EffectF -> Type -> Type infixr 7 Source #

Keyed first-order effect.

pattern K :: forall {k} key ins a. ins a -> Key key ins a Source #

Keyed first-order effect.

newtype KeyH (key :: k) (sig :: EffectH) (f :: Type -> Type) a Source #

Keyed higher-order effect.

Constructors

KeyH 

Fields

Instances

Instances details
HFunctor sig => HFunctor (KeyH key sig) Source # 
Instance details

Defined in Data.Effect.Key

Methods

hfmap :: forall (f :: Type -> Type) (g :: Type -> Type). (f :-> g) -> KeyH key sig f :-> KeyH key sig g #

Foldable (sig f) => Foldable (KeyH key sig f) Source # 
Instance details

Defined in Data.Effect.Key

Methods

fold :: Monoid m => KeyH key sig f m -> m #

foldMap :: Monoid m => (a -> m) -> KeyH key sig f a -> m #

foldMap' :: Monoid m => (a -> m) -> KeyH key sig f a -> m #

foldr :: (a -> b -> b) -> b -> KeyH key sig f a -> b #

foldr' :: (a -> b -> b) -> b -> KeyH key sig f a -> b #

foldl :: (b -> a -> b) -> b -> KeyH key sig f a -> b #

foldl' :: (b -> a -> b) -> b -> KeyH key sig f a -> b #

foldr1 :: (a -> a -> a) -> KeyH key sig f a -> a #

foldl1 :: (a -> a -> a) -> KeyH key sig f a -> a #

toList :: KeyH key sig f a -> [a] #

null :: KeyH key sig f a -> Bool #

length :: KeyH key sig f a -> Int #

elem :: Eq a => a -> KeyH key sig f a -> Bool #

maximum :: Ord a => KeyH key sig f a -> a #

minimum :: Ord a => KeyH key sig f a -> a #

sum :: Num a => KeyH key sig f a -> a #

product :: Num a => KeyH key sig f a -> a #

Traversable (sig f) => Traversable (KeyH key sig f) Source # 
Instance details

Defined in Data.Effect.Key

Methods

traverse :: Applicative f0 => (a -> f0 b) -> KeyH key sig f a -> f0 (KeyH key sig f b) #

sequenceA :: Applicative f0 => KeyH key sig f (f0 a) -> f0 (KeyH key sig f a) #

mapM :: Monad m => (a -> m b) -> KeyH key sig f a -> m (KeyH key sig f b) #

sequence :: Monad m => KeyH key sig f (m a) -> m (KeyH key sig f a) #

Functor (sig f) => Functor (KeyH key sig f) Source # 
Instance details

Defined in Data.Effect.Key

Methods

fmap :: (a -> b) -> KeyH key sig f a -> KeyH key sig f b #

(<$) :: a -> KeyH key sig f b -> KeyH key sig f a #

type (##>) = KeyH :: k -> EffectH -> (Type -> Type) -> Type -> Type infixr 7 Source #

Keyed higher-order effect.

pattern KH :: forall {k} key sig f a. sig f a -> KeyH key sig f a Source #

Keyed higher-order effect.