!QJw      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv Trustworthy 4=>?@AEGMUVX>wizardsA class for implementing actions on a backend. E.g Run IO Output provides an interpreter for the Output action in the IO monad.wizardsSubsumption of two functors. You shouldn't define any of your own instances of this when writing back-ends, rely only on GeneralizedNewtypeDeriving.wizardsCoproduct of two functorswizardsA  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 H is made up of one or more "primitives" (see below), composed using the w, x and y instances. The yp instance is, as you might expect, a maybe-style cascade. If the first wizard fails, the next one is tried. z( can be used to induce failure directly.The z constructor is exported here for use when developing backends, but it is better for end-users to simply pretend that N is an opaque data type. Don't depend on this unless you have no other choice.s are, internally, just a maybe transformer over a free monad built from some coproduct of functors, each of which is a primitive action.wizardsA string for a promptwizardsWInjection function for free monads, see "Data Types a la Carte" from Walter Swierstra, Chttp://www.cs.ru.nl/~W.Swierstra/Publications/DataTypesALaCarte.pdfwizards!Run a wizard using some back-end.   9  Trustworthy>UV4*wizardsOutput a string. Does not fail.+wizards5Output a string followed by a newline. Does not fail.,wizardsgRead one line of input from the user. Cannot fail (but may throw exceptions, depending on the backend).-wizardsjRead a single character only from input. Cannot fail (but may throw exceptions, depending on the backend)..wizardsgRead one line of input, with some default text already present, before and/or after the editing cursor./wizardsARead one line of password input, with an optional mask character.0wizardsaRetry produces a wizard that will retry the entire conversation again if it fails. It is simply retry x = x <|> retry x.1wizardsSame as 0+, except an error message can be specified.2wizardsx `defaultTo` y will return y if x fails, e.g parseRead line `defaultTo` 0.3wizardsLike {&, except the function may be partial (| causes the wizard to fail).4wizards validator pL causes a wizard to fail if the output value does not satisfy the predicate p.5wizardsSimply validator (not . null)1, makes a wizard fail if it gets an empty string.6wizardsNMakes a wizard fail if it gets an ordered quantity outside of the given range.7wizardsSimply  parser readP. Attaches a simple read parser to a .8wizards5Translate a maybe value into wizard success/failure. 9wizards7Ensures that a maybe value satisfies a given predicate.:wizardsA read-based parser for the 3 modifier..wizardsText to the left of the cursorwizardsText to the right of the cursor/wizardsMask character, if any. *+,-./0123456789:,./- * +0123456789: Trustworthy 24=>?@AMUV>_>wizards:Haskeline supports all the following features completely. ?wizardsThe Haskeline back-end will throw this exception if EOF is encountered when it is not expected. Specifically, when actions such as } return |.Awizards?Modifies a wizard so that it will run with different Haskeline ~ to the top level input monad.BwizardsA 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.<=>?@AB?@>BA<= Trustworthy=?@AMUVDfXwizardsThe X? backend supports only simple input and output. Support for  and , features can be added with a shim from . YwizardsA 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.XYXY Trustworthy )2=?@AMUVJfwizardsThe f? backend supports only simple input and output. Support for  and , features can be added with a shim from System.Console.Wizard.Shim. gwizardsQThe pure backend is actually just a simple state monad, with the following state.hwizards9Thrown if the wizard ever unexpectedly runs out of input.jwizards Run a wizard in the Pure backendfghijfhijg           !"#$%&'()*+,-./0123456789:;;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdeefghijklmnopqrstustvstwstxstysz{|}~|#wizards-1.0.3-ANHTcuEB7cFG7UrjY3Tr6System.Console.Wizard.InternalSystem.Console.WizardSystem.Console.Wizard.HaskelineSystem.Console.Wizard.BasicIOSystem.Console.Wizard.PureShim ArbitraryIOPasswordLinePrewritten CharacterLineOutputLnOutputRun runAlgebra:<::+:InlInrWizard PromptStringinjectrun $f:<:f:+: $f:<:f:+:0$f:<:ff $fRunb:+:$fFunctorArbitraryIO $fMonadWizard$fFunctorWizard$fApplicativeWizard$fAlternativeWizard$fMonadPlusWizard $fFunctor:+:$fFunctorOutput$fFunctorOutputLn $fFunctorLine$fFunctorCharacter$fFunctorLinePrewritten$fFunctorPasswordoutputoutputLnline characterlinePrewrittenpasswordretryretryMsg defaultToparser validatornonEmptyinRange parseRead liftMaybeensurereadP$fMonadIOWizard WithSettings Haskeline UnexpectedEOF withSettings haskeline$fRunInputTArbitraryIO$fRunInputTPassword$fRunInputTLinePrewritten$fRunInputTCharacter$fRunInputTLine$fRunInputTOutputLn$fRunInputTOutput$fExceptionUnexpectedEOF$fRunInputTWithSettings$fShowUnexpectedEOF$fFunctorWithSettings$f:<:Haskeline$f:<:Haskeline0$f:<:Haskeline1$f:<:Haskeline2$f:<:Haskeline3$f:<:Haskeline4$f:<:Haskeline5$f:<:Haskeline6$fFunctorHaskeline$fRunHaskelineBasicIObasicIO$fRunIOArbitraryIO$fRunIOCharacter $fRunIOLine$fRunIOOutputLn $fRunIOOutput $f:<:BasicIO $f:<:BasicIO0 $f:<:BasicIO1 $f:<:BasicIO2 $f:<:BasicIO3$fFunctorBasicIO $fRunBasicIOPure PureState UnexpectedEOIrunPure$fExceptionUnexpectedEOI$fRunStateTCharacter$fRunStateTLine$fRunStateTOutputLn$fRunStateTOutput$fShowUnexpectedEOI $f:<:Pure $f:<:Pure0 $f:<:Pure1 $f:<:Pure2 $fFunctorPure $fRunPurebaseGHC.Base ApplicativeMonad Alternativemzerofmap GHC.MaybeNothinghaskeline-0.7.4.3System.Console.Haskeline getInputLineSystem.Console.Haskeline.InputTSettings