machines-0.7.3: Networked stream transducers
Copyright(C) 2012 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityprovisional
Portabilityportable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Machine.MooreT

Description

Synopsis

Documentation

newtype MooreT m a b Source #

Moore machine, with applicative effects

Constructors

MooreT 

Fields

Instances

Instances details
AutomatonM MooreT Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

autoT :: forall (m :: Type -> Type) a b. Monad m => MooreT m a b -> ProcessT m a b Source #

Functor m => Profunctor (MooreT m) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

dimap :: (a -> b) -> (c -> d) -> MooreT m b c -> MooreT m a d #

lmap :: (a -> b) -> MooreT m b c -> MooreT m a c #

rmap :: (b -> c) -> MooreT m a b -> MooreT m a c #

(#.) :: forall a b c q. Coercible c b => q b c -> MooreT m a b -> MooreT m a c #

(.#) :: forall a b c q. Coercible b a => MooreT m b c -> q a b -> MooreT m a c #

(Functor m, Monad m) => Costrong (MooreT m) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

unfirst :: MooreT m (a, d) (b, d) -> MooreT m a b #

unsecond :: MooreT m (d, a) (d, b) -> MooreT m a b #

Functor m => Functor (MooreT m a) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

fmap :: (a0 -> b) -> MooreT m a a0 -> MooreT m a b #

(<$) :: a0 -> MooreT m a b -> MooreT m a a0 #

Applicative m => Applicative (MooreT m a) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

pure :: a0 -> MooreT m a a0 #

(<*>) :: MooreT m a (a0 -> b) -> MooreT m a a0 -> MooreT m a b #

liftA2 :: (a0 -> b -> c) -> MooreT m a a0 -> MooreT m a b -> MooreT m a c #

(*>) :: MooreT m a a0 -> MooreT m a b -> MooreT m a b #

(<*) :: MooreT m a a0 -> MooreT m a b -> MooreT m a a0 #

(Distributive m, Applicative m) => Distributive (MooreT m a) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

distribute :: Functor f => f (MooreT m a a0) -> MooreT m a (f a0) #

collect :: Functor f => (a0 -> MooreT m a b) -> f a0 -> MooreT m a (f b) #

distributeM :: Monad m0 => m0 (MooreT m a a0) -> MooreT m a (m0 a0) #

collectM :: Monad m0 => (a0 -> MooreT m a b) -> m0 a0 -> MooreT m a (m0 b) #

Applicative m => Pointed (MooreT m a) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

point :: a0 -> MooreT m a a0 #

(Applicative m, Semigroup b) => Semigroup (MooreT m a b) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

(<>) :: MooreT m a b -> MooreT m a b -> MooreT m a b #

sconcat :: NonEmpty (MooreT m a b) -> MooreT m a b #

stimes :: Integral b0 => b0 -> MooreT m a b -> MooreT m a b #

(Applicative m, Monoid b) => Monoid (MooreT m a b) Source # 
Instance details

Defined in Data.Machine.MooreT

Methods

mempty :: MooreT m a b #

mappend :: MooreT m a b -> MooreT m a b -> MooreT m a b #

mconcat :: [MooreT m a b] -> MooreT m a b #

unfoldMooreT :: Functor m => (s -> m (b, a -> s)) -> s -> MooreT m a b Source #

Construct a MooreT machine from a state valuation and transition action

upgrade :: Applicative m => Moore a b -> MooreT m a b Source #

hoist :: Functor n => (forall x. m x -> n x) -> MooreT m a b -> MooreT n a b Source #

couple :: Monad m => MooreT m a b -> MealyT m b a -> m c Source #

firstM :: (Functor m, Monad m) => (a' -> m a) -> MooreT m a b -> MooreT m a' b Source #

secondM :: Monad m => (b -> m b') -> MooreT m a b -> MooreT m a b' Source #