úÎi»ff1      !"#$%&'()*+,-./0<Non-portable (rank-2 types, generalized algebraic datatypes) ExperimentalDan Doel ?A datatype representing type equality. The EQU constructor can < be used to provide evidence that two types are equivalent. FThe prompt generation monad. Represents the type of computations that ) make use of a supply of unique prompts. 12-The prompt type, parameterized by two types: J * ans : The region identifier, used to ensure that prompts are only used 4 within the same context in which they are created. - a : The type of values that may be returned through a given prompt. $ For instance, only prompts of type ' Prompt r a' may be pushed onto a  computation of type 'CC r a'. 3GRuns a computation that makes use of prompts, yielding a result in the  underlying monad. Generates a new, unique prompt @Tests to determine if two prompts are equal. If so, it provides * evidence of that fact, in the form of an Equal. .Non-portable (generalized algebraic datatypes) ExperimentalDan Doel HA type representing a sub-sequence, which may be appended to a sequence I of appropriate type. It represents a sequence that takes values of type L a to values of type b, and may be pushed onto a sequence that takes values " of type b to values of type ans. GThis is a generalized sequence datatype, parameterized by three types: 4 seg : A constructor for segments of the sequence. Ians : the type resulting from applying all the segments of the sequence. " Also used as a region parameter. >a : The type expected as input to the sequence of segments. 4The null sub-sequence Concatenate two subsequences 1Push a sub-sequence onto the front of a sequence ?Splits a sequence at the given prompt into a sub-sequence, and  the rest of the sequence      pNon-portable (rank-2 types, multi-parameter type classes, functional dependencies) ExperimentalDan DoelAA typeclass for monads that support delimited control operators. , The type varibles represent the following: m : The monad itself Np : The associated type of prompts that may delimit computations in the monad Bs : The associated type of sub-continuations that may be captured Creates a new, unique prompt. ,Delimits a computation with a given prompt. ?Abortively capture the sub-continuation delimited by the given I prompt, and call the given function with it. The prompt does not appear A delimiting the sub-continuation, nor the resulting computation. GPushes a sub-continuation, reinstating it as part of the continuation. IThe CC monad may be used to execute computations with delimited control. 56@The CCT monad transformer allows you to layer delimited control " effects over an arbitrary monad. <The CCT transformer is parameterized by the following types @ ans : A region parameter, so that prompts and subcontinuations ? may only be used in the same region they are created.  m : the underlying monad F a : The contained value. A value of type CCT ans m a can be though I of as a computation that calls its continuation with a value of  type a 789:;<=>EExecutes a CCT computation, yielding a value in the underlying monad 7Executes a CC computation, yielding a resulting value. $An approximation of the traditional reset! operator. Creates a new prompt, J calls the given function with it, and delimits the resulting computation  with said prompt. The traditional shift counterpart to the above . Reifies the H subcontinuation into a function, keeping both the subcontinuation, and : the resulting computation delimited by the given prompt. The control, operator, traditionally the counterpart of prompt . It does I not delimit the reified subcontinuation, so control effects therein can ? escape. The corresponding prompt is performed equally well by  above. LAbortively captures the current subcontinuation, delimiting it in a reified ? function. The resulting computation, however, is undelimited. KAbortively captures the current subcontinuation, delimiting neither it nor  the resulting computation. 8Aborts the current continuation up to the given prompt. .Non-portable (generalized algebraic datatypes) ExperimentalDan Doel :The type of dynamically scoped variables in a given monad ?!*Creates a new dynamically scoped variable "1Reads the value of a dynamically scoped variable #1Assigns a value to a dynamically scoped variable $4Modifies the value of a dynamically scoped variable %:Calls the function, g, with the value of the given Dynvar &<Introduces a new value to the dynamic variable over a block  !"#$%& !"#$%& !"#$%&eNon-portable (Generalized algebraic data types, Functional Dependencies) ExperimentalDan Doel 'HA simple iterator, which provides a way to view each of the elements of  a data structure in order. (GA generalized type that represents a reified data structure traversal. I The other traversal data types in this module are special cases of this 6 general type. Cursor is parameterized by four types: 4m : The monad in which the Cursor object is usable. Kr : The result type, which will be stored in the cursor once the traversal  has been completed. Hb : The type that the cursor expects to receive before moving on to the $ next element in the traversal. Ia : The element type to which the Cursor provides access at each step in  the traversal. )*+HA function for making a cursor out of a free form generator, similar to  using yield! in Ruby or Python. For example: O generator $ \yield -> do a <- yield 1 ; yield 2 ; b <- yield 3 ; return [a,b] @,JCreates an Iterator that will yield each of the elements of a Foldable in  order. -QAdvances an Iterator to the next element (has no effect on a finished Iterator). .;Extracts the current element from a cursor, if applicable. /IBegins an updating traversal over a Traversable structure. At each step, M the cursor will hold an element of type a, and providing an element of type N b will move on to the next step. When done, a new Traversable object holding ' elements of type b will be available. 0KProvides an item to a Cursor, moving on to the next step in the traversal. ' (has no effect on a finished Cursor). '()*+,-./0 (*)'+,.-/0 '(*))*+,-./0A      !"#$%&'()*+,-./0123456 7 89:;<=>?@&ABCC-delcont-0.2Control.Monad.CC.PromptControl.Monad.CC.SeqControl.Monad.CCControl.Monad.CC.DynvarControl.Monad.CC.CursorEqualNEQEQUPPromptrunP newPromptNameeqPromptSubSeqSeqPushSegPushPEmptyS appendSubSeqpushSeqsplitSeqMonadDelimitedCont newPrompt pushPrompt withSubCont pushSubContCCCCTSubContrunCCTrunCCresetshiftcontrolshift0control0abortDynvardnewdrefdsetdmodduppdletIteratorCursorDoneCurrent generatoriteratornextcurrentopenupdateunP emptySubSequnCCunCCTSCContFrameMFrameFFrameappk makeCursor