Copyright | (c) Fumiaki Kinoshita 2015 |
---|---|
License | BSD3 |
Maintainer | Fumiaki Kinoshita <[email protected]> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | Safe |
Language | Haskell2010 |
Data.Functor.Request
Description
- data Request a b r = Request a (b -> r)
- mapRequest :: (a -> a') -> Request a b r -> Request a' b r
- request :: a -> Request a b b
- accept :: Functor m => (a -> m b) -> Request a b r -> m r
- mealy :: Functor m => (a -> m (b, Object (Request a b) m)) -> Object (Request a b) m
- flyweight :: (Applicative m, Eq k, Hashable k) => (k -> m a) -> Object (Request k a) m
- (>~~>) :: Monad m => Object (Request a b) m -> Object (Request b c) m -> Object (Request a c) m
- accumulator :: Applicative m => (b -> a -> b) -> b -> Object (Request a b) m
- animate :: (Applicative m, Num t) => (t -> m a) -> Object (Request t a) m
- transit :: (Alternative m, Fractional t, Ord t) => t -> (t -> m a) -> Object (Request t a) m
Documentation
is the type of a request that sends Request
a ba
to receive b
.
Constructors
Request a (b -> r) |
Instances
Profunctor (Request a) | |
Functor (Request a b) | |
Monoid a => Applicative (Request a b) | |
Typeable (* -> * -> * -> *) Request |
mapRequest :: (a -> a') -> Request a b r -> Request a' b r Source
Apply a function to the body of Request
accept :: Functor m => (a -> m b) -> Request a b r -> m r Source
Handle a Request
, smashing the continuation.
mealy :: Functor m => (a -> m (b, Object (Request a b) m)) -> Object (Request a b) m Source
Add a step as a mealy machine
flyweight :: (Applicative m, Eq k, Hashable k) => (k -> m a) -> Object (Request k a) m Source
The flyweight object
(>~~>) :: Monad m => Object (Request a b) m -> Object (Request b c) m -> Object (Request a c) m Source
Compose mealy machines
accumulator :: Applicative m => (b -> a -> b) -> b -> Object (Request a b) m Source
animate :: (Applicative m, Num t) => (t -> m a) -> Object (Request t a) m Source
Create a mealy machine from a time-varying action.
animate f ≡ accumulator (+) 0 >~~> liftO (accept f)
transit :: (Alternative m, Fractional t, Ord t) => t -> (t -> m a) -> Object (Request t a) m Source
Like animate
, but the life is limited.