objective-1: Extensible objects

Copyright(c) Fumiaki Kinoshita 2014
LicenseBSD3
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellTrustworthy
LanguageHaskell2010

Data.Functor.Request

Description

 

Synopsis

Documentation

data Request a b r Source

'Request a b' is the type of a request that sends a 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

request :: a -> Request a b b Source

handles :: Functor m => (a -> m (b, Object (Request a b) m)) -> Object (Request a b) m Source

flyweight :: (Applicative m, Eq k, Hashable k) => (k -> m a) -> Object (Request k a) m Source

Like flyweight, but it uses Strict internally.

animate :: (Applicative m, Num t) => (t -> m a) -> Object (Request t a) m Source

transit :: (Alternative m, Fractional t, Ord t) => t -> (t -> m a) -> Object (Request t a) m Source