effet-0.4.0.0: An Effect System based on Type Classes
Copyright(c) Michael Szvetits 2020
LicenseBSD3 (see the file LICENSE)
Maintainertypedbyte@qualified.name
Stabilitystable
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Control.Effect.Map.Lazy

Description

Lazy interpretations of the Map' effect.

If you don't require disambiguation of multiple map effects (i.e., you only have one map effect in your monadic context), you usually need the untagged interpretations.

Synopsis

Interpreter Implementation

data LazyMap k v m a Source #

The lazy interpreter of the map effect. This type implements the Map' type class in a lazy manner.

When interpreting the effect, you usually don't interact with this type directly, but instead use one of its corresponding interpretation functions.

Instances

Instances details
(Monad m, Ord k2) => Map' (tag :: k1) k2 v (LazyMap k2 v m) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Methods

clear' :: LazyMap k2 v m () Source #

lookup' :: k2 -> LazyMap k2 v m (Maybe v) Source #

update' :: k2 -> Maybe v -> LazyMap k2 v m () Source #

MonadBase b m => MonadBase b (LazyMap k v m) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Methods

liftBase :: b α -> LazyMap k v m α #

MonadBaseControl b m => MonadBaseControl b (LazyMap k v m) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Associated Types

type StM (LazyMap k v m) a #

Methods

liftBaseWith :: (RunInBase (LazyMap k v m) b -> b a) -> LazyMap k v m a #

restoreM :: StM (LazyMap k v m) a -> LazyMap k v m a #

MonadTrans (LazyMap k v) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Methods

lift :: Monad m => m a -> LazyMap k v m a #

MonadTransControl (LazyMap k v) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Associated Types

type StT (LazyMap k v) a #

Methods

liftWith :: Monad m => (Run (LazyMap k v) -> m a) -> LazyMap k v m a #

restoreT :: Monad m => m (StT (LazyMap k v) a) -> LazyMap k v m a #

Monad m => Monad (LazyMap k v m) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Methods

(>>=) :: LazyMap k v m a -> (a -> LazyMap k v m b) -> LazyMap k v m b #

(>>) :: LazyMap k v m a -> LazyMap k v m b -> LazyMap k v m b #

return :: a -> LazyMap k v m a #

Functor m => Functor (LazyMap k v m) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Methods

fmap :: (a -> b) -> LazyMap k v m a -> LazyMap k v m b #

(<$) :: a -> LazyMap k v m b -> LazyMap k v m a #

Monad m => Applicative (LazyMap k v m) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Methods

pure :: a -> LazyMap k v m a #

(<*>) :: LazyMap k v m (a -> b) -> LazyMap k v m a -> LazyMap k v m b #

liftA2 :: (a -> b -> c) -> LazyMap k v m a -> LazyMap k v m b -> LazyMap k v m c #

(*>) :: LazyMap k v m a -> LazyMap k v m b -> LazyMap k v m b #

(<*) :: LazyMap k v m a -> LazyMap k v m b -> LazyMap k v m a #

MonadIO m => MonadIO (LazyMap k v m) Source # 
Instance details

Defined in Control.Effect.Map.Lazy

Methods

liftIO :: IO a -> LazyMap k v m a #

type StT (LazyMap k v) a Source # 
Instance details

Defined in Control.Effect.Map.Lazy

type StT (LazyMap k v) a = StT (StateT (Map k v)) a
type StM (LazyMap k v m) a Source # 
Instance details

Defined in Control.Effect.Map.Lazy

type StM (LazyMap k v m) a = StM (StateT (Map k v) m) a

clear :: Monad m => LazyMap k v m () Source #

Deletes all key-value pairs from the map.

lookup :: (Monad m, Ord k) => k -> LazyMap k v m (Maybe v) Source #

Searches for a value that corresponds to a given key. Returns Nothing if the key cannot be found.

update :: (Monad m, Ord k) => k -> Maybe v -> LazyMap k v m () Source #

Updates the value that corresponds to a given key. Passing Nothing as the updated value removes the key-value pair from the map.

Tagged Interpretations

runMap' Source #

Arguments

:: forall tag k v m a. Monad m 
=> (Map' tag k v `Via` LazyMap k v) m a

The program whose map effect should be handled.

-> m a

The program with its map effect handled.

Runs the map effect, initialized with an empty map.

Untagged Interpretations

runMap :: Monad m => (Map k v `Via` LazyMap k v) m a -> m a Source #

The untagged version of runMap'.