Module

Data.Machine.Mealy

#MealyT

newtype MealyT f s a

Instances

#runMealyT

runMealyT :: forall f s a. MealyT f s a -> s -> f (Step f s a)

#hoistMealyT

hoistMealyT :: forall f g s. Functor g => (f ~> g) -> (MealyT f s) ~> (MealyT g s)

Transforms a Mealy machine running in the context of f into one running in g, given a natural transformation from f to g.

#Step

data Step f s a

Constructors

#Source

type Source f s = MealyT f Unit s

#Sink

type Sink f a = MealyT f a Unit

#source

source :: forall f s. Monad f => f s -> Source f s

#sink

sink :: forall f a. Monad f => (a -> f Unit) -> Sink f a

#stepMealy

stepMealy :: forall f s a. Monad f => s -> MealyT f s a -> f (Step f s a)

#runMealy

runMealy :: forall f. Monad f => MealyT f Unit Unit -> f Unit

#pureMealy

pureMealy :: forall f s a. Applicative f => (s -> Step f s a) -> MealyT f s a

#mealy

mealy :: forall f s a. Applicative f => (s -> f (Step f s a)) -> MealyT f s a

#halt

halt :: forall f s a. Applicative f => MealyT f s a

#take

take :: forall f s a. Monad f => Int -> MealyT f s a -> MealyT f s a

#drop

drop :: forall f s a. Monad f => Int -> MealyT f s a -> MealyT f s a

#loop

loop :: forall f s a. Monad f => MealyT f s a -> MealyT f s a

#toUnfoldable

toUnfoldable :: forall f g s a. Unfoldable g => Comonad f => s -> MealyT f s a -> g a

#zipWith

zipWith :: forall f s a b c. Monad f => (a -> b -> c) -> MealyT f s a -> MealyT f s b -> MealyT f s c

#scanl

scanl :: forall f s a b. Monad f => (b -> a -> b) -> b -> MealyT f s a -> MealyT f s b

#collect

collect :: forall f s a. Monad f => MealyT f s a -> MealyT f s (List a)

#singleton

singleton :: forall f s a. Monad f => a -> MealyT f s a

#fromMaybe

fromMaybe :: forall f s a. Monad f => Maybe a -> MealyT f s a

#fromArray

fromArray :: forall f s a. Monad f => Array a -> MealyT f s a

#msplit

msplit :: forall f s a. Monad f => MealyT f s a -> MealyT f s (Maybe (Tuple a (MealyT f s a)))

#interleave

interleave :: forall f s a. Monad f => MealyT f s a -> MealyT f s a -> MealyT f s a

#when

when :: forall f s a b. Monad f => MealyT f s a -> (a -> MealyT f s b) -> MealyT f s b

#ifte

ifte :: forall f s a b. Monad f => MealyT f s a -> (a -> MealyT f s b) -> MealyT f s b -> MealyT f s b

#wrapEffect

wrapEffect :: forall f s a. Monad f => f a -> MealyT f s a

Modules