moffy-0.1.1.0: Monadic Functional Reactive Programming
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Moffy

Synopsis

Sig

data Sig s es a r Source #

Instances

Instances details
((es :+: es) ~ es, Mergeable es es es, Monoid r) => Applicative (Flip (Sig s es) r) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig

Methods

pure :: a -> Flip (Sig s es) r a #

(<*>) :: Flip (Sig s es) r (a -> b) -> Flip (Sig s es) r a -> Flip (Sig s es) r b #

liftA2 :: (a -> b -> c) -> Flip (Sig s es) r a -> Flip (Sig s es) r b -> Flip (Sig s es) r c #

(*>) :: Flip (Sig s es) r a -> Flip (Sig s es) r b -> Flip (Sig s es) r b #

(<*) :: Flip (Sig s es) r a -> Flip (Sig s es) r b -> Flip (Sig s es) r a #

Functor (Flip (Sig s es) r) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

fmap :: (a -> b) -> Flip (Sig s es) r a -> Flip (Sig s es) r b #

(<$) :: a -> Flip (Sig s es) r b -> Flip (Sig s es) r a #

Applicative (Sig s es a) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

pure :: a0 -> Sig s es a a0 #

(<*>) :: Sig s es a (a0 -> b) -> Sig s es a a0 -> Sig s es a b #

liftA2 :: (a0 -> b -> c) -> Sig s es a a0 -> Sig s es a b -> Sig s es a c #

(*>) :: Sig s es a a0 -> Sig s es a b -> Sig s es a b #

(<*) :: Sig s es a a0 -> Sig s es a b -> Sig s es a a0 #

Functor (Sig s es a) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

fmap :: (a0 -> b) -> Sig s es a a0 -> Sig s es a b #

(<$) :: a0 -> Sig s es a b -> Sig s es a a0 #

Monad (Sig s es a) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

(>>=) :: Sig s es a a0 -> (a0 -> Sig s es a b) -> Sig s es a b #

(>>) :: Sig s es a a0 -> Sig s es a b -> Sig s es a b #

return :: a0 -> Sig s es a a0 #

data ISig s es a r Source #

Instances

Instances details
((es :+: es) ~ es, Mergeable es es es, Semigroup r) => Applicative (Flip (ISig s es) r) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig

Methods

pure :: a -> Flip (ISig s es) r a #

(<*>) :: Flip (ISig s es) r (a -> b) -> Flip (ISig s es) r a -> Flip (ISig s es) r b #

liftA2 :: (a -> b -> c) -> Flip (ISig s es) r a -> Flip (ISig s es) r b -> Flip (ISig s es) r c #

(*>) :: Flip (ISig s es) r a -> Flip (ISig s es) r b -> Flip (ISig s es) r b #

(<*) :: Flip (ISig s es) r a -> Flip (ISig s es) r b -> Flip (ISig s es) r a #

Functor (Flip (ISig s es) r) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

fmap :: (a -> b) -> Flip (ISig s es) r a -> Flip (ISig s es) r b #

(<$) :: a -> Flip (ISig s es) r b -> Flip (ISig s es) r a #

Applicative (ISig s es a) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

pure :: a0 -> ISig s es a a0 #

(<*>) :: ISig s es a (a0 -> b) -> ISig s es a a0 -> ISig s es a b #

liftA2 :: (a0 -> b -> c) -> ISig s es a a0 -> ISig s es a b -> ISig s es a c #

(*>) :: ISig s es a a0 -> ISig s es a b -> ISig s es a b #

(<*) :: ISig s es a a0 -> ISig s es a b -> ISig s es a a0 #

Functor (ISig s es a) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

fmap :: (a0 -> b) -> ISig s es a a0 -> ISig s es a b #

(<$) :: a0 -> ISig s es a b -> ISig s es a a0 #

Monad (ISig s es a) Source # 
Instance details

Defined in Control.Moffy.Internal.Sig.Type

Methods

(>>=) :: ISig s es a a0 -> (a0 -> ISig s es a b) -> ISig s es a b #

(>>) :: ISig s es a a0 -> ISig s es a b -> ISig s es a b #

return :: a0 -> ISig s es a a0 #

React

data Rct es r Source #

type EvReqs (es :: Set Type) = OneOrMore es Source #

class (Numbered e, Selectable e) => Request e Source #

Associated Types

data Occurred e Source #

Instances

Instances details
Request GetLock Source # 
Instance details

Defined in Control.Moffy.Event.Lock.Internal

Associated Types

data Occurred GetLock Source #

Request NewLockId Source # 
Instance details

Defined in Control.Moffy.Event.Lock.Internal

Associated Types

data Occurred NewLockId Source #

Request Unlock Source # 
Instance details

Defined in Control.Moffy.Event.Lock.Internal

Associated Types

data Occurred Unlock Source #

Request GetThreadId Source # 
Instance details

Defined in Control.Moffy.Event.ThreadId

Associated Types

data Occurred GetThreadId Source #

Request DeltaTime Source # 
Instance details

Defined in Control.Moffy.Event.Time

Associated Types

data Occurred DeltaTime Source #

Request TryWait Source # 
Instance details

Defined in Control.Moffy.Event.Time

Associated Types

data Occurred TryWait Source #

Constraint

type Firstable es es' a b = (Updatable a b, Adjustable es (es :+: es'), Adjustable es' (es :+: es'), ((es :+: es') :+: (es :+: es')) ~ (es :+: es'), Mergeable (es :+: es') (es :+: es') (es :+: es')) Source #

class Adjustable es es' Source #

Minimal complete definition

adjust

Instances

Instances details
Adjustable es es Source # 
Instance details

Defined in Control.Moffy.Internal.React

Methods

adjust :: React s es a -> React s es a Source #

(Expandable es es', CollapsableOccurred es' es) => Adjustable es es' Source # 
Instance details

Defined in Control.Moffy.Internal.React

Methods

adjust :: React s es a -> React s es' a Source #

Combinator

Await and Adjust

await :: e -> (Occurred e -> r) -> React s (Singleton e) r Source #

adjust :: Adjustable es es' => React s es a -> React s es' a Source #

adjustSig :: Adjustable es es' => Sig s es a r -> Sig s es' a r Source #

never :: React s es a Source #

Create Sig

emit :: a -> Sig s es a () Source #

waitFor :: React s es r -> Sig s es a r Source #

repeat :: React s es a -> Sig s es a r Source #

Traverse

find :: (a -> Bool) -> Sig s es a r -> React s es (Either a r) Source #

scanl :: (b -> a -> b) -> b -> Sig s es a r -> Sig s es b r Source #

Parallel

first :: Firstable es es' a b => React s es a -> React s es' b -> React s (es :+: es') (Or a b) infixr 8 Source #

at :: Firstable es es' (ISig s (es :+: es') a r) r' => Sig s es a r -> React s es' r' -> React s (es :+: es') (Either r (Maybe a, r')) infixr 7 Source #

atResult :: (r -> String) -> (r' -> String) -> Either r (Maybe a, r') -> Either String a Source #

break :: Firstable es es' (ISig s (es :+: es') a r) r' => Sig s es a r -> React s es' r' -> Sig s (es :+: es') a (Either r (Maybe a, r')) infixl 7 Source #

until :: Firstable es es' (ISig s (es :+: es') a r) r' => Sig s es a r -> React s es' r' -> Sig s (es :+: es') a (Either r (a, r')) infixl 7 Source #

indexBy :: Firstable es es' (ISig s (es :+: es') a r) (ISig s (es :+: es') b r') => Sig s es a r -> Sig s es' b r' -> Sig s (es :+: es') (a, b) (Either r (Maybe a, r')) infixl 7 Source #

Copies

spawn :: Sig s es a r -> Sig s es (ISig s es a r) r' Source #

parList :: ((es :+: es) ~ es, Mergeable es es es) => Sig s es (ISig s es a r) r' -> Sig s es [a] ([r], r') Source #