úÎQMó      unportableunstable<byorgey@gmail.com>=AEditor monad: a reader monad with the editor configuration, plus B | a state monad for storing the context, plus IO for interacting  | with the user. ?A configuration record determining the behavior of the editor. !How to display the current item. %How to display a prompt to the user, & based on the currently focused item. &A list specifying the actions to take  in response to user inputs. 6Actions that can be taken by an editor in response to  user input. an action annotated with a  help string. perform a sequence of actions. complete the editing session. cancel the editing session. output a string which is a ! function of the current item. Similar to InsFwd, except ! that the new item is inserted  before the old current item. Using the given string as a ! prompt, obtain a line of user  input, and apply the given ! function to the user input to  obtain a new item, which ! should be inserted forward of  the current item. The ! inserted item becomes the new  current item. Using the given string as a ! prompt, obtain a line of user  input, and apply the given ! function to the user input to  obtain a function for  modifying the current item. modify items before the  current item by applying the  given function. modify items following  the current item by applying  the given function. modify the current item by  applying the given function, ! which gives its result in the  IO monad. $modify the current item by applying  the given function. delete the current item. move back one item. move forward one item. BThe state of the editor consists of a current context, as well as B an optional continuation which can compute more list elements.  >A continuation which can compute more of the list, along with ! (maybe) another continuation. !5A context includes the possibility of an empty list. " List zipper. #$%&',Re-constitute a list from a zipper context. (@Turn a list into a context with the focus on the first element. )@Move the focus to the previous element. Do nothing if the focus $ | is already on the first element. *@Move the focus to the next element. Do nothing if the focus is  | already on the last element. +=Apply the given function to the currently focused element to , | produce a new currently focused element. ,>Apply the given function to all elements preceding the focus. -:Apply the given function to all elements after the focus. .BDelete the currently focused element. If the deleted element was E | the last element, focus moves to the previous element; otherwise, $ | focus moves to the next element. /BInsert a new element just before the current focus, then move the ( | focus to the newly inserted element. 0AInsert a new element just after the current focus, then move the ( | focus to the newly inserted element. 'Annotate a command with a help string. ?Some standard actions which can be used in constructing editor ; configurations. The actions are: j - Fwd, k - Back, x - ! Delete, q - Cancel, d - Done. 1!Convenient shorthand for liftIO. 2BRun an action in the Editor monad, given an editor configuration, 2 | a starting list, and an optional continuation. 3<Lift a pure function on a context into a state modification  | action in the Editor monad. 2Run the given editor on the given list, returning Nothing if - the user canceled the editing process, or Just l if the editing ) process completed successfully, where l is the final state of  the list being edited. editor configuration the list to edit Like 6, but with an additional parameter for a continuation < | which can be run to compute additional list elements and & | (optionally) another continuation. 4AThe main Editor action implementing a zipedit-created interface. 53Display any help annotations provided by the user. 6BPerform an action, returning an indication of the status: Nothing < | indicates cancellation of the editing process; Just True C | indicates that processing should continue; Just False indicates  | that processing is complete. 78@Move the focus one element forward, unless we are at the end of < | the list. If we are at the end of a list and there is a E | continuation, run it and append the generated elements, moving to 8 | the first of the new elements; otherwise do nothing. 9=Perform a ModifyIO action by running the given IO action and 6 | using it to replace the currently focused element. :BPerform a ModifyWInp action by prompting the user and using their 2 | input to modify the currently focused element. ;?Prompt the user, convert their input to an element, and return  | the element. <4Output a function of the currently focused element.     =      !"#$%&'()*+,-./0123456789:;<=>? zipedit-0.2.2System.Console.ZipEdit EditorConfECdisplaypromptactionsActionHelpSeqDoneCancelOutputInsBackInsFwd ModifyWInp ModifyBack ModifyFwdModifyIOModifyDeleteBackFwdLContLC?? stdActionsedit editWContEditorELStateLSctxcontContextLZipperLZpastpresentfuture integrate differentiatebackfwdmodify modifyBack modifyFwddeleteinsbackinsfwdio runEditor modifyCtxprocessshowHelpdoActioncontinuedoFwd doModifyIOdoModifyPrompt doInsPromptdoOutput