úÎ9Ý8   None 9A function that gets three alists and returns a new one. %Lisp like alist, key -> value pairs. "Class of types for which the easy  syntax is supported. The  defineFlag function defines a new flag. The parameters:  name of the flag (l:long- syntax if you want to have the short option l for this flag),,  default value,  help string for the flag. @Every flag the program supports has to be defined through a new : phantom datatype and the Flag instance of that datatype.  But users of the library shouldn' t worry about this class or the = implementation details behind these functions, just use the   defineFlag3 Template Haskell function for defining new flags. 0Data type for storing every property of a flag. function to evaluate in  ( to force syntax check of the argument. >The most flexible way of defining a flag. For an example see   Ehttp://github.com/errge/hflags/blob/master/examples/ComplexExample.hs.  For most things  should be enough instead. The parameters:  name of the flag (l:long- syntax if you want to have the short option l for this flag), 2 expression quoted and type signed default value, B help string identifying the type of the argument (e.g. INTLIST), # read function, expression quoted, # show function, expression quoted,  help string for the flag. This just forwards to  with  [| read |] and   [| show |]6. Useful for flags where the type is not an instance  of . For examples, see   Ehttp://github.com/errge/hflags/blob/master/examples/ComplexExample.hs. The parameters:  name of the flag (l:long- syntax if you want to have the short option l for this flag), 2 expression quoted and type signed default value, B help string identifying the type of the argument (e.g. INTLIST),  help string for the flag.  A global IORef for the communication between  initHFlags and  flags_*6. This is a map between flag name and current value.  A global IORef' for the easy access to the arguments. ?Contains the non-parsed, non-option parts of the command line, ( the arguments. Can only be used after  initHFlags has been called.  Initializes  globalHFlags' and returns the non-option arguments. KGathers all the flag data from every module that is in (transitive) scope.  Type after splicing:  [FlagData]. 7Same as initHFlags, but makes it possible to introduce ; programmatic defaults based on user supplied flag values. BThe second parameter has to be a function that gets the following  alists:  defaults, - values from HFLAGS_* environment variables,  command line options. BHas to return an alist that contains the additional defaults that B will override the default flag values (but not the user supplied ' values: environment or command line). Type after splicing is )String -> DependentDefaults -> IO [String].  Where:  type AList = [(String, String)] 9type DependentDefaults = AList -> AList -> AList -> AList ;Has to be called from the main before doing anything else:    main = do args <- $initHFlags Simple program v0.1  ... fSince version 0.2, you mustn't put the initHFlags in a parentheses with the program description. Just  $initHFlags,  it's cleaner. @Internally, it uses Template Haskell trickery to gather all the : instances of the Flag class and then generates a call to   initFlags8 with the appropriate data gathered together from those  instances to a list. Type after splicing is String -> IO [String]. "    !       !"      !"# hflags-0.2HFlagsFlagType defineFlagFlag getFlagDatadefineCustomFlag defineEQFlag globalHFlagsglobalArguments argumentsinitHFlagsDependentDefaults initHFlagsDependentDefaultsAListFlagDatafCheck initFlags getFlagsDatafNamefShort fDefValuefArgType fDescription fModuleNameboolShowboolRead lookupFlag$fFlagTypeText$fFlagTypeDouble $fFlagType[]$fFlagTypeInteger $fFlagTypeInt$fFlagTypeBool$fShowFlagData