ConcurrentUtils-0.5.0.0: Concurrent utilities

Safe HaskellSafe
LanguageHaskell2010

Control.CUtils.StrictArrow

Synopsis

Documentation

type ProfunctorOptic a t u v w = a v w -> a t u Source #

class Arrow a => Strict a where Source #

Arrows that have a strictness effect.

Methods

force :: ProfunctorOptic a t u t u Source #

Laws:

  • Either a has arrow apply-constraint, or it is an application of an arrow transformer or both.
  • Provided a has arrow apply-constraint, force = forceDef.
  • Provided a is an application of an arrow transformer, tmap force is more defined (less strict) than force.
  • force has the unique most strict implementation which is compatible with the previous laws.

These laws place limitations on the effects that force can introduce. Reynolds' parametricity also implies that force does not change the argument and return values.

Instances
Monad f => Strict (Kleisli f) Source # 
Instance details

Defined in Control.CUtils.StrictArrow

Methods

force :: ProfunctorOptic (Kleisli f) t u t u Source #

Strict ((->) :: Type -> Type -> Type) Source # 
Instance details

Defined in Control.CUtils.StrictArrow

Methods

force :: ProfunctorOptic (->) t u t u Source #

(Strict a, ArrowChoice a) => Strict (AbortT r a) Source # 
Instance details

Defined in Control.CUtils.StrictArrow

Methods

force :: ProfunctorOptic (AbortT r a) t u t u Source #

Strict a => Strict (ReaderT r a) Source # 
Instance details

Defined in Control.CUtils.StrictArrow

Methods

force :: ProfunctorOptic (ReaderT r a) t u t u Source #

Strict a => Strict (StateT s a) Source # 
Instance details

Defined in Control.CUtils.StrictArrow

Methods

force :: ProfunctorOptic (StateT s a) t u t u Source #

(Strict a, Monoid w) => Strict (WriterT w a) Source # 
Instance details

Defined in Control.CUtils.StrictArrow

Methods

force :: ProfunctorOptic (WriterT w a) t u t u Source #

evalInFst :: (t, u) -> (t, u) Source #