úÎ:|4ø]      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\(c) Fumiaki Kinoshita 2014 BSD3 (Fumiaki Kinoshita <fumiexcel@gmail.com>  experimental  non-portable None &(+-3=JK2'Request a b' is the type of a request that sends a to receive b.  (c) Fumiaki Kinoshita 2014 BSD3 (Fumiaki Kinoshita <fumiexcel@gmail.com>  experimental  non-portable None &(+-3=JK (The type for asynchronous input/output.  GfilterPush :: (a -> Bool) -> PushPull a b r -> Program (PushPull a b) r      (c) Fumiaki Kinoshita 2014BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone &+234HJKMObject with a final result. Object f g "a Mortal f g Void4An object which is specialized to be a Mealy machine The type  Object f g. represents objects which can handle messages f%, perform actions in the environment g@. It can be thought of as an automaton that converts effects. ,s can be composed just like functions using !; the identity element is  4. Objects are morphisms of the category of functors An alias for . The identity object!Object-object composition"Object-function composition#Function-object composition&-Lift a natural transformation into an object.'#Change the workspace of the object.(8Apply a function to the messages coming into the object.)1Build an object using continuation passing style.*Build a stateful object.stateful t s = t ^>> variable s@+The unwrapped analog of * unfoldO runObject = id "unfoldO runSequential = sequential unfoldO iterObject = iterable-A mutable variable../Build a stateful object, sharing out the state./)An object that won't accept any messages.06Extend an object by adding another independent object.1The flyweight pattern.2Like 1, but it uses  internally.7%Let object handle sequential methods.8%Let object handle sequential methods.C 9_Process :: Iso' (Object (Request a b) m) (Process m a b)E-For every adjunction f "£ g, we can "connect"  Object g m and  Object f m permanently.FLike E, but kept until the right  dies.GLike E, but kept until the left  dies.H Connect two s.C !"#$%&'()*+,-./0123456789:;<=>?@ABC]DEFGH^_`abcdefghijk4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGH4& )*-+,;<.=>!"#$%/0'(EFGH3478569:12?@ABCD= !"#$%&'()*+,-./0123456789:;<=>?@ABC]DEFGH^_`abcdefghijk !"#$%034EFGH(c) Fumiaki Kinoshita 2014BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableNone &234=HJKMQInvoke a method.R(.^) for StateTT<We can convert method invocation into an object trivially. invocation i = liftO (i.-) IJKLMNOPQRST IJKLMNOPQRST OJKLMNIPQRSTIJKLMNOPQRSTPQRS(c) Fumiaki Kinoshita 2014 BSD3 (Fumiaki Kinoshita <fumiexcel@gmail.com>  experimental  non-portable None246=KUVWXUVXWUVVXWU%(c) Corbin Simpson, Google Inc. 2014 BSD3 (Fumiaki Kinoshita <fumiexcel@gmail.com>  experimental non-portable (ST) None&3=KYZ[\YZ\[YZZ\[Y NoneIJKLMNOPQRSTUVYZl       !"##$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrobjective-0.6.3.2Data.Functor.RequestData.Functor.PushPullControl.ObjectControl.Monad.Objective.ClassControl.Monad.Objective.IOControl.Monad.Objective.ST Data.HashMapStrictControl.Monad.ObjectiveRequest mapRequestrequestacceptacceptM$fTowerRequest$fApplicativeRequest$fProfunctorRequest PushPull'PushPullPullPushmapPushpushpullbipushbipull filterPush$fTowerPushPull$fProfunctorPushPullMortalunMortalProcess unProcessVariableObject runObject@-echo@>>@@>>^^>>@@**@@||@liftO transObject adaptObjectoneshotstatefulunfoldOunfoldOMvariablesharingloner@|>@ flyweight flyweight'@!@!! iterObject iterTObject sequential sequentialT iterative iterativeTfoldPfoldP'animatetransitannounce announceMaybeannounceMaybeTannounceMortal_Process runMortal$$$$!!$$!$$!MonadObjective ObjectiveBaseInstInstOfnewinvokeInst'.-.^.&.! invocationInstIOnewIOTFCo:R:InstIOfg$fObjectiveBaseIOInstSTnewSTTFCo:R:InstSTfg$fObjectiveBaseSTmortal $fMonadMortal$fApplicativeMortal$fFunctorMortal$fFractionalProcess $fNumProcess$fChoiceProcess$fStrongProcess$fProfunctorProcess$fArrowChoiceProcess$fArrowProcess$fCategory*Process$fMonoidProcess$fApplicativeProcess$fFunctorProcess