úÎIîEa8      !"#$%&'()*+,-./01234567 Trustworthy€A class for implementing actions on a backend. E.g Run IO Output provides an interpreter for the Output action in the IO monad. (Subsumption of two functors. You shouldn'lt define any of your own instances of this when writing back-ends, rely only on GeneralizedNewtypeDeriving. Coproduct of two functors A  Wizard b a. is a conversation with the user via back-end b! that will result in a data type a, or may fail.  A  is made up of one or more " primitives"! (see below), composed using the 8,  9 and : instances. The :; instance is, as you might expect, a maybe-style cascade. 5 If the first wizard fails, the next one is tried. ;) can be used to induce failure directly. The d constructor is exported here for use when developing backends, but it is better for end-users to  simply pretend that  is an opaque data type. Don'2t depend on this unless you have no other choice. es are, internally, just a maybe transformer over a free monad built from some coproduct of functors, ' each of which is a primitive action. A string for a prompt (Injection function for free monads, see "Data Types a la Carte" from Walter Swierstra, http:// www.cs.ru.nl/ ~W.Swierstra/ Publications/DataTypesALaCarte.pdf "Run a wizard using some back-end.  <=>?@      <=>?@ Trustworthy Output a string. Does not fail. 6Output a string followed by a newline. Does not fail. hRead one line of input from the user. Cannot fail (but may throw exceptions, depending on the backend). kRead a single character only from input. Cannot fail (but may throw exceptions, depending on the backend). JRead one line of input, with some default text already present, before and/or after the editing cursor. BRead one line of password input, with an optional mask character. SRetry produces a wizard that will retry the entire conversation again if it fails.  It is simply  retry x = x <|> retry x. Same as ,, except an error message can be specified. !x ` defaultTo` y will return y if x fails, e.g parseRead line ` defaultTo` 0. "Like A&, except the function may be partial (B causes the wizard to fail). # validator pL causes a wizard to fail if the output value does not satisfy the predicate p. $Simply validator (not . null)2, makes a wizard fail if it gets an empty string. %OMakes a wizard fail if it gets an ordered quantity outside of the given range. &Simply  parser readP. Attaches a simple read parser to a . '+Translate a maybe value into wizard success/ failure. (8Ensures that a maybe value satisfies a given predicate. )A read-based parser for the " modifier. Text to the left of the cursor  Text to the right of the cursor Mask character, if any.  !"#$%&'()C  !"#$%&'()   !"#$%&'() !"#$%&'()C Trustworthy,;Haskeline supports all the following features completely. -GThe Haskeline back-end will throw this exception if EOF is encountered ? when it is not expected. Specifically, when actions such as D return B. /?Modifies a wizard so that it will run with different Haskeline E to the top level input monad. 0_A simple identity function, used to restrict types if the type inferred by GHC is too general. ^ You could achieve the same effect with a type signature, but this is slightly less typing. *+,-./0FGHIJKLMN*+,-./0-.,0/*+*+,-./0FGHIJKLMN Trustworthy1The 10 backend supports only simple input and output.  Support for  and  features can be added with  a shim from . 2_A simple identity function, used to restrict types if the type inferred by GHC is too general. ^ You could achieve the same effect with a type signature, but this is slightly less typing. 12OPQRS121212OPQRS Trustworthy3The 30 backend supports only simple input and output.  Support for  and  features can be added with  a shim from System.Console.Wizard.Shim. 4RThe pure backend is actually just a simple state monad, with the following state. 5:Thrown if the wizard ever unexpectedly runs out of input. 7!Run a wizard in the Pure backend 34567TUVWX3456735674 34567TUVWXY           !"#$%&'())*++,-./012234564784594:;<=>?@47A4BCDEFGEHIJKLMNOPQRSTUVWXYZ[\] wizards-1.0System.Console.Wizard.InternalSystem.Console.WizardSystem.Console.Wizard.HaskelineSystem.Console.Wizard.BasicIOSystem.Console.Wizard.PureShim ArbitraryIOPasswordLinePrewritten CharacterLineOutputLnOutputRun runAlgebra:<::+:InrInlWizard PromptStringinjectrunoutputoutputLnline characterlinePrewrittenpasswordretryretryMsg defaultToparser validatornonEmptyinRange parseRead liftMaybeensurereadP WithSettings Haskeline UnexpectedEOF withSettings haskelineBasicIObasicIOPure PureState UnexpectedEOIrunPurebaseControl.Applicative ApplicativeGHC.BaseMonad Alternative Control.Monadmzero$fFunctorArbitraryIO $fRunb:+: $f:<:f:+: $f:<:f:+:0$f:<:fffmap Data.MaybeNothing$fMonadIOWizardhaskeline-0.6.4.7System.Console.Haskeline getInputLineSystem.Console.Haskeline.InputTSettings$fRunInputTWithSettings$fRunInputTArbitraryIO$fRunInputTPassword$fRunInputTLinePrewritten$fRunInputTCharacter$fRunInputTLine$fRunInputTOutputLn$fRunInputTOutput$fExceptionUnexpectedEOF$fRunIOArbitraryIO$fRunIOCharacter $fRunIOLine$fRunIOOutputLn $fRunIOOutput$fRunStateTCharacter$fRunStateTLine$fRunStateTOutputLn$fRunStateTOutput$fExceptionUnexpectedEOI