netwire-3.1.0: Fast generic automaton arrow transformer for AFRP

MaintainerErtugrul Soeylemez <es@ertes.de>

Control.Wire.Classes

Contents

Description

Type classes used in Netwire.

Synopsis

Various effects

Monadic

class Monad m => MonadClock t m | m -> t whereSource

Monads with a clock.

Methods

getTime :: m tSource

Current time in some monad-specific frame of reference.

Instances

MonadClock Double IO

Instance for the system time. This is intentionally specific to allow you to define better instances with custom monads.

class Monad m => MonadRandom m whereSource

Monads supporting random number generation.

Methods

getRandom :: Random a => m aSource

Returns a random number for the given type.

getRandomR :: Random a => (a, a) -> m aSource

Returns a random number in the given range.

Instances

Arrows

class Arrow >~ => ArrowKleisli m (>~) | >~ -> m whereSource

Arrows which support running monadic computations.

Methods

arrM :: Monad m => m b >~ bSource

Run the input computation and output its result.

Instances

ArrowKleisli m >~ => ArrowKleisli m (Automaton >~) 
Monad m => ArrowKleisli m (Kleisli m) 
(ArrowKleisli m >~, Monoid l) => ArrowKleisli m (WriterArrow l >~) 
(Applicative f, ArrowKleisli m >~) => ArrowKleisli m (StaticArrow f >~) 
ArrowKleisli m >~ => ArrowKleisli m (StateArrow s >~) 
ArrowKleisli m >~ => ArrowKleisli m (ReaderArrow e >~) 
(ArrowChoice >~, ArrowKleisli m >~) => ArrowKleisli m (ErrorArrow ex >~) 
Monad m => ArrowKleisli m (Wire e (Kleisli m))

When the target arrow is an ArrowKleisli, then the wire arrow is also an ArrowKleisli.

arrIO :: (ArrowKleisli m >~, MonadIO m) => IO b >~ bSource

Kleisli arrows, which have IO at their base.