objective-0.6.2: Extensible objects

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

Data.Functor.PushPull

Description

 

Synopsis

Documentation

data PushPull a b r Source

The type for asynchronous input/output.

Constructors

Push a r 
Pull (b -> r) 

Instances

Profunctor (PushPull a) 
Functor (PushPull a b) 
Tower (PushPull a b) 
Typeable (* -> * -> * -> *) PushPull 
type Floors1 (PushPull a b) = (:>) (* -> *) (PushPull a b) (Floors (PushPull a b)) 
type Floors (PushPull a b) = (:>) (* -> *) ((,) a) ((:>) (* -> *) ((->) b) (Empty (* -> *))) 

mapPush :: (a -> a') -> PushPull a b r -> PushPull a' b r Source

push :: Elevate (PushPull a b) f => a -> f () Source

pull :: Elevate (PushPull a b) f => f b Source

bipush :: (i -> (a, c)) -> (b -> d -> o) -> PushPull i o r -> Day (PushPull a b) (PushPull c d) r Source

bipull :: (a -> b -> c) -> PushPull i c r -> Day (PushPull i a) (PushPull i b) r Source

filterPush :: (Applicative f, Elevate (PushPull a b) f) => (a -> Bool) -> PushPull a b r -> f r Source

filterPush :: (a -> Bool) -> PushPull a b r -> Program (PushPull a b) r