^X'      !"#$%&  Safe-Inferred!" Safe-Inferred23468'()'() Safe-Inferred234 1Class describing parseable values. Much like the * class.Given a sequence of strings,  returns +E and the number of strings consumed if the parse failed. Otherwise,  returns ,5 the parsed value and the number of strings consumed.bElement-wise, an entire string must be parsed in the sequence to be considered a successful parse.?Turns a parser of a single string into a parser suitable for a  instance.Useful for implementing a  for a type with a * instance by supplying - to this function.Note: The string is not@ tokenized in any way before being passed into the input parser.Repeatedly applies 5 the given number of times, accumulating the results.$Useful for implementing new parsers.Example: data Point = Point Float Float Float instance Parseable Point where parse strs = case repeatedParse 3 strs of (Just [x,y,z], n) -> (Just (Point x y z), n)` (Nothing, n) -> (Nothing, n) .-Always succeeds and never consumes any input./>Greedily parses a single argument or no argument. Never fails.0 Parses a 1 using its * instance.25Identity parser. Ex: @parse "abc" == (Just "abc", 1)3!Parses a single character string.4 Parses an 5 using its * instance.6 Parses an 7 using its 8 instance.9 Parses a : using its 8 instance.;<=>?@A./023469;<=>?@A./023469 Safe-Inferred2468 BCDE    BCDE Safe-Inferred+ A simple wrapper over [a]*. Used to avoid overlapping instances for  Parseable [a] and Parseable StringF<Greedily parses arguments item-wise. Never fails. Example: 3parse (words "5 67 NaN") == (Just (List [5,67]), 2) GF    GF Safe-Inferred+24  Convenience  creation class.An option keyword, such as "--help"!All the aliases for this keyword.CText to describe the arguments to the option given by this keyword.BText to describe the function of the option given by this keyword.Shorthand for . Sets the 1 field in the keyword. Intended to be used infix: =kw "--directory" `argText` "DIR" `text` "Write files to DIR." Sets the 1 field in the keyword. Intended to be used infix. /kw "--quiet" `text` "Suppress message display."HUsed to create a  with many (or no) aliasesIUsed to create a  with a single alias.JIdentiy mapping.HIJK   HIJKNoneB"User configuration for formatting.6Formats the given string with the given configuration.8Formats the given keywords with the given configuration. !FormatConfig { fmtMaxWidth = 80 }LMNOPQRSTUVWXYZ[\]^_`LMNOPQRSTUVWXYZ[\]^_`None&+BPContains information about what went wrong during an unsuccessful options parse.  Contains (error-message) (begin-args-index) (end-args-index)!A monad for parsing options."Describes the callback f/ to be called for a successfully parsed option.The function (or value) f= can have any arity and ultimately returns a value with type Monad m => m a2Each of the callback's arguments must have a type t which implements  and a.2Think of this as the following constraint synonym: ftype OptionCallback m a f = (Monad m, f ~ (Parseable t*, Typeable t*) => t0 -> t1 -> ... -> tN -> m a)Example callbacks: f0 = putStrLn "Option parsed!" :: IO () f1 = put :: String -> State String () f2 n = liftIO (print n) :: (MonadIO m) => Int -> m () f3 name year ratio = lift (print (name, year, ratio)) :: (MonadTrans m) => String -> Int -> Float -> m IO () f4 = return 7 :: Identity Int#uTries to parse the supplied options against input arguments. If successful, parsed option callbacks are returned in b. Otherwise an  is returned in c.Example program: import System.Environment import Text.LambdaOptions options :: Options IO () () options = do addOption (kw ["--help", "-h"] `text` "Display this help text.") $ do putStrLn "Usage:" putStrLn $ getHelpDescription options addOption (kw "--user" `argText` "NAME" `text` "Prints name.") $ \name -> do putStrLn $ "Name:" ++ name addOption (kw "--user" `argText` "NAME AGE" `text` "Prints name and age.") $ \name age -> do putStrLn $ "Name:" ++ name ++ " Age:" ++ show (age :: Int) main :: IO () main = do args <- getArgs case runOptions options args of Left (ParseFailed msg _ _) -> do putStrLn msg putStrLn $ getHelpDescription options Right actions -> sequence_ actions5example.exe --user HaskellCurry 81 --user GraceHopperName:HaskellCurry Age:81Name:GraceHopperexample.exe -hUsage:3-h, --help Display this help text.( --user NAME Prints name.0 --user NAME AGE Prints name and age."example.exe --user Pythagoras LXXV!Unknown option at index 2: `LXXV'Usage:3-h, --help Display this help text.( --user NAME Prints name.0 --user NAME AGE Prints name and age.$ Adds the supplied option to the Options m a () context.If the keyword is matched and the types of the callback's parameters can successfully be parsed, the callback is called with the parsed arguments.%9Produces the help description given by the input options.& Produces the "s inserted into the input options.+ defghijkl!mnopqrs"tuvw#xyz${|}~%& !"#$%&#! "$%& defghijkl!mnopqrs"tuvw#xyz${|}~%& None  !"#$%&       !"#$%&'()*+,-./01203403506789:;<=>?@ABCD;<EFGHI;<JKLMNOPQRSTUV-WXYZ[\\]^_`abcdefghijklmn0op0qr0qsttuvwxyz{'|}}~lambda-options-0.9.0.0"Text.LambdaOptions.Internal.Opaque Text.LambdaOptions.Internal.WrapText.LambdaOptions.Parseable(Text.LambdaOptions.Internal.OpaqueParserText.LambdaOptions.ListText.LambdaOptions.KeywordText.LambdaOptions.FormatterText.LambdaOptions.CoreText.LambdaOptionsOpaqueCallbackOpaqueWrapwrap Parseableparse simpleParse repeatedParseGetOpaqueParsersgetOpaqueParsers OpaqueParserListunList ToKeyword toKeywordKeywordkwNames kwArgTextkwTextkwargTexttext FormatConfig fmtMaxWidthformatformatKeywordsdefaultFormatConfig OptionsError ParseFailedOptionsOptionCallback runOptions addOptiongetHelpDescription getKeywords internalError $fWrapm(->)$fWrapmmbaseGHC.ReadRead Data.MaybeNothingJust Text.Read readMaybe $fParseable()$fParseableMaybe$fParseableFloatghc-prim GHC.TypesFloat $fParseable[]$fParseableChar$fParseableInteger integer-gmpGHC.Integer.TypeInteger$fParseableIntIntread-bounded-0.1.1.0Text.Read.Bounded ReadBounded$fParseableWordWordrepeatedParse' parseBoundedtoPair parse2Tuple parse3Tuple$fParseable(,,)$fParseable(,)decomposeFuncProxy parseOpaque$fGetOpaqueParsersrm$fGetOpaqueParsersr(->)$fParseableList $fToKeyword[]$fToKeyword[]0$fToKeywordKeyword$fIsStringKeyword FormatterFormatterState fmtConfigfmtEmittedCharsfmtWordfmtWidthfmtIndentation runFormatter formatKeywordisShortformatKeywordNamesformatKeywordArgTextformatKeywordText flushWordchangeIndentationindentnewLine emitSpaceemitChar emitStringData.Typeable.InternalTypeable Data.EitherRightLeft OptionsStatestateOpaqueParsersstateOptionsByAritystateCollectedActions stateCurrMark stateHighMark stateArgsstateFormatConfig unOptions OptionInfo optionKeywordoptionTypeRepsoptionOpaqueCallbackgetProxyinternalizeKeyword mkParseFailedmkParseFailed'runOptionsInternal runOptions' addByArityfirstMwhileM tryParseAlltryParsetryParseByAritytryParseByOptionstryParseByOption matchKeyword matchKeyword'sequenceParserscollectKeywordscreateHelpDescription