úÎ=M9Ä9      !"#$%&'()*+,-./012345678(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> provisionalGADTs, Rank2TypesSafe+EHJKMHigher-order profunctors The type  Object f g. represents objects which can handle messages f%, perform actions in the environment gB. It can be thought of as an automaton that transforms effects. ,s can be composed just like functions using  ; the identity element is 4. Objects are morphisms of the category of actions.  Naturality/runObject obj . fmap f "a fmap f . runObject objAn infix alias for The trivial object-Lift a natural transformation into an object. 'The categorical composition of objects.  Reversed '(>>)' "Combine objects so as to handle a 9 of interfaces. An unwrapped analog of  id = unfoldO runObject iterative = unfoldO iterObject cascade = unfoldO cascadeObject Same as   but requires : insteadBuild a stateful object.  stateful t s = t ^>>@ variable sFlipped 9. it is convenient to use with the LambdaCase extension. CascadingObjects can consume free monadsA mutable variable. variable = stateful id(Pass zero or more messages to an object.3Add capability to handle multiple messages at once..Send a message to objects through a traversal.5Send a message to objects in a traversable container. -announce = withBuilder . announcesOf traverse ;<    ;<  (c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> provisionalGADTs, Rank2Types TrustworthyHMTA I is an object that may die. A mortal yields a final result upon death.  f g forms a :: = is a dead object and (>') prolongs the life of the left object. Object f g "a Mortal f g VoidConstruct a mortal in a  construction manner.Send a message to a mortal. Restricted $ constuctor which can be applied to transit,  fromFoldable without ambiguousness.+Turn an object into a mortal without death.+Send a message to mortals through a filter. Send a message to mortals in a ? container. apprises = apprisesOf wither!)Send a message to mortals in a container. !@ABC  !  !  !@ABC(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> provisionalGADTs, Rank2TypesSafe!"HM "TMVar-based instance$2Invoke a method with an explicit landing function.%2Invoke a method with an explicit landing function.&Invoke a method, atomically.'Invoke a method.(Take a snapshot of an instance.)/Create a new instance. This can be used inside unsafePerformIO to create top-level instances.*DCreate a new instance, having it sitting on the current environment.+Create a new instance. "#$%&'()*+D "#$%&'()*+ "#)*+$%'&( "#$%&'()*+D&'(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableSafe &(+-3=JK ,, a b% is the type of a request that sends a to receive b.. Apply a function to the body of ,/ Create a ,.0 Handle a ,, smashing the continuation.1Add a step as a mealy machine2The flyweight object3Compose mealy machines52Create a mealy machine from a time-varying action. 4 animate f "a accumulator (+) 0 >~~> liftO (accept f)6Like 5, but the life is limited. ,-./012345678 ,-./0123456 ,-.87/0123456 ,-./012345678(c) Fumiaki Kinoshita 2015BSD3'Fumiaki Kinoshita <fumiexcel@gmail.com> experimental non-portableSafe7  !"#$%&'()*+,-./0123456E       !"#$%&'()*+,-./00123456789:;<=>?@ABC?@D?@EFGHIJKLMNobjective-1.0.4Control.Object.ObjectControl.Object.MortalControl.Object.InstanceData.Functor.RequestControl.Object HProfunctor^>>@@>>^Object runObject@-echoliftO@>>@@<<@@||@unfoldOunfoldOMstateful@~ iterObject iterativevariable cascadeObject cascading announcesOfannounce withBuilderMortalunMortalmortal runMortalmortal_immortal apprisesOfapprisesappriseInstanceInstRefinvokeOn invokeOnSTM..-.-snapshotnew newSettlenewSTMRequest mapRequestrequestacceptmealy flyweight>~~> accumulatoranimatetransit$fApplicativeRequest$fProfunctorRequesttransformers-0.4.3.0Data.Functor.SumSumbaseGHC.BaseMonad withBuilderM$fHProfunctorObjectreturn>>=witherable-0.1.2.2Data.Witherable Witherable$fMonadTransMortal $fMonadMortal$fApplicativeMortal$fFunctorMortal$fHProfunctorInstance