úÎ^ƒ[:      !"# $ % &'()* + , - . / 0 123456789 +non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk,Construct a new arrow from an existing one. 'A transformation of arrows, preserving : , ;  and < . !Typical usage in arrow notation:  proc p -> ...  (|lift cmd|) +non-portable (multi-parameter type classes) experimentalross@soi.city.ac.ukBAn arrow type that can be used to interpret synchronous circuits. A delay component. 4An arrow type that includes errors (or exceptions). Minimal definition:  and . TODO:E the operations here are inconsistent with other arrow transformers. Raise an error. !Traditional exception construct. !Typical usage in arrow notation:  proc p -> ...  body `handle` \ex -> handler $Exception construct in the style of Exceptional Syntax, $ by Nick Benton and Andrew Kennedy, JFP 11(4):395-410, July 2001. !Typical usage in arrow notation:  proc p -> ...  (|tryInUnless  body  (\res -> success)  (\ex -> handler)  |) +Handler that returns the error as a value. 7An arrow type that collects additional output (of some =  type). "Add a piece of additional output. >Run a subcomputation in the same arrow, making its additional  output accessible. !Typical usage in arrow notation:  proc p -> do  ... ' (value, output) <- (|newWriter cmd|) 0An arrow type that provides a modifiable state,  based of section 9 of Generalising Monads to Arrows, by John Hughes,  Science of Computer Programming 37:67-111, May 2000. 'Obtain the current value of the state. !Assign a new value to the state. @An arrow type that provides a read-only state (an environment). + If you also need to modify the state, use  . 'Obtain the current value of the state. =Run a subcomputation in the same arrow, but with a different ; environment. The environment of the outer computation is  unaffected. !Typical usage in arrow notation:  proc p -> ...  (|newReader cmd|) env A suitable value for  when the arrow type belongs to  > %. To use it, you must define either  or .    +non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk +non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk#EAn arrow type comprising Mealy-style automata, each step of which is . is a computation in the original arrow type. %@Encapsulating an automaton by running it on a stream of inputs,  obtaining a stream of outputs. !Typical usage in arrow notation:   proc p -> do  ... ( ys <- (|runAutomaton (\x -> ...)|) xs Here xs refers to the input stream and x to individual  elements of that stream. ys is bound to the output stream. #$%#$%+non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk&?An arrow that augments an existing arrow with possible errors.  The 1 class contains methods for raising and handling  these errors. '*Encapsulate an error-raising computation, $ by completely handling any errors. !Typical usage in arrow notation:  proc p -> ... ! body `runError` \ex -> handler &'&'+non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk(@An arrow type that augments an existing arrow with a modifiable  state. The  . class contains the operations on this state. )AEncapsulation of a state-using computation, exposing the initial  and final states. !Typical usage in arrow notation:  proc p -> do  ... 7 (result, final_state) <- (|runState cmd|) init_state  !"()() !" +non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk*DA special case is monads applied to the whole arrow, in contrast to  ? @ 6 arrows, in which the monad is applied to the output. +A special case. ,JAn arrow type that augments the underlying arrow with static information. *+,-./0,*+-./0+non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk1In-place state updates. Note: this is an arrow type, and  can be used to promote arrows  from ? @  (A  s),: the resulting arrow updates the state for D each stream element in turn, and as long as the final state in not ! required all is well. However,  does not preserve composition,  because this monad isn'-t commutative. In particular, a composition  of :s of state transformers will not work, as the second will ' require the final state of the first. 2Mappings of streams 3Arrows between streams. Note:  is only a functor if B  in the underlying arrow is. 4ARun a stream processor on a stream of inputs, obtaining a stream  of outputs. !Typical usage in arrow notation:   proc p -> do  ... % ys <- (|runStream (\x -> ...)|) xs Here xs refers to the input stream and x to individual  elements of that stream. ys is bound to the output stream. 5Encapsulate a local state. 1234534215+non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk6@An arrow type that augments an existing arrow with accumulating  output. The  ) class contains the relevant operations. 7IEncapsulation of a writer computation, providing the accumulated output. !Typical usage in arrow notation:  proc p -> do  ... ( (result, output) <- (|runWriter cmd|) 6767+non-portable (multi-parameter type classes) experimentalross@soi.city.ac.uk8EAn arrow type that augments an existing arrow with a read-only state  (or environment). The  class contains the operations  on this state. 9EEncapsulation of a state-reading computation, taking a value for the  state. !Typical usage in arrow notation:  proc p -> ...  (|runReader cmd|) env 8989' !"#$%&'()*+,-./0123456789C !"#$%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4 5 5 6789: ; < = > ? @ ABCDEFGHIJ K L M N O P P QR ST arrows-0.4.1Control.Arrow.TransformerControl.Arrow.Operations!Control.Arrow.Transformer.CoState Control.Arrow.Transformer.StreamControl.Arrow.Transformer.Error Control.Arrow.Transformer.Writer Control.Arrow.Transformer.ReaderControl.Arrow.Transformer.State#Control.Arrow.Transformer.Automaton Control.Arrow.Transformer.Staticbase Control.ArrowControl.Category Data.MonoidControl.Monad.STControl.Arrow.Transformer.AllArrowTransformerlift ArrowCircuitdelay ArrowErrorraisehandle tryInUnlessnewError ArrowWriterwrite newWriter ArrowStatefetchstore ArrowReader readState newReadertryInUnlessDefault CoStateArrowControl.Arrow.InternalsArrowAddStream liftStream elimStream ArrowAddError liftError elimErrorArrowAddWriter liftWriter elimWriterArrowAddReader liftReader elimReader ArrowAddState liftState elimState Automaton runAutomaton ErrorArrowrunError StateArrowrunStateStaticMonadArrowStaticArrowArrow StaticArrowwrapAunwrapAwrapMunwrapM StreamMapST StreamMap StreamArrow runStream runStreamST WriterArrow runWriter ReaderArrow runReaderarr>>>firstMonoid ArrowChoiceKleisliGHC.STST***