úÎ2,Íc      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abNone !"'(+2346=HJKM FIXME: is it possible to remove  from the signature and return Val a p instead?A  is a static version of c1, i.e., we know at compile time whether we have d or e.This is f on c lifted to the type level.aType-level lookup of a path in a configuration type. A path is represented as a list of symbols..cons for record fields.0Ådescriptive strings for documentation. (the way we use this is still a little awkward. use tuple of name string and descr string? or a type class "path" with a type family that translates both  "" :>: "" and "" to ""?)2)the equivalent of record field selectors.5Very basic fist approach: read --(key)(=|s+)(value)4; construct shell env from keys and names, and use ” on the command line. If it doesn't like the syntax used in the command line, it will crash. I hope for this to get much fancier in the future.9This is a version of f on c for .:This is a wrapper around  that hides the interal use of `. As we expect, this version will just cause a type error if it is applied to an illegal path.;LMerge two json trees such that the latter overwrites nodes in the former. gP is considered as non-existing. Otherwise, right values overwrite left values.K We need the ¿ constraint here because overlapping instances and closed type families aren't fully compatible. GHC won't be able to recognize that we've already excluded the other cases and not reduce ¥ automatically. But the constraint should always resolve, unless we've made a mistake, and the worst outcome if we did are extra type errors, not run-time errors.T>the sub-object structure of the config file is represented by '_'? in the shell variable names. (i think it's still ok to have '_' in your config variable names instead of caml case; this parser first chops off matching names, then worries about trailing '_'.)UØsince shell env is not ideally suitable for providing arbitrary-length lists of sub-configs, we cheat: if a value is fed into a place where a list of values is expected, a singleton list is constructed implicitly.c  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abA  !"#$%&'()*+,-./0123456789:;<=>?@c2301./,-ba`(+*)'&%$#"! 4_^]\[ZYXWVUTSRQP56789:ONMLK ;<=>?@JIHGFEDCBAI  $#"! %&'(+*),-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab./02 h      !"#$%&'()*'(+,-../0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdbcebcfbghijklconfigifier-0.0.2Data.Configifier HasRenderDoc renderDocHasToDoctoDocDocDocBaseDocListDocDictToExcValE LookupFailedExcDoneFailSelselCMaybeCJustCNothingOrElseValHasParseCommandLineparseCommandLineArgsHasParseShellEnv'parseShellEnv'HasParseShellEnv parseShellEnvEnvHasParseConfigFileparseConfigFileErrorCommandLinePrimitiveOtherCommandLinePrimitiveParseErrorShellEnvSegmentNotFoundShellEnvNoParse InvalidJSON CommandLineShellEnv ConfigFileSourceConfigFileYamlEntryentry:|:>:D:>L configifyprimitiveParseCommandLine parseArgsparseArgsWithEqSignparseArgsWithSpacecombine>.<<>>merge mergeAndCatchdocs concatDoc _makeDocPair$fHasRenderDoc*CommandLine$fHasRenderDoc*ShellEnv$fHasRenderDoc*ConfigFile$fHasToDoc*Bool$fHasToDoc*Int$fHasToDoc*Text $fHasToDoc*[] $fHasToDoc*:|$fHasToDoc*:>: $fHasToDoc*:>$fSelaps$fSel:|:$fSel:>: $fSel:>::$fSela[]$fHasParseCommandLinekcfg$fHasParseShellEnv*:|$fHasParseShellEnv*:>:$fHasParseShellEnv*:|0$fHasParseShellEnv*:>$fHasParseShellEnv*[]$fHasParseShellEnv*Text$fHasParseShellEnv*Bool$fHasParseShellEnv*Int $fToJSON:>: $fToJSON:| $fToJSON:> $fFromJSON:>: $fFromJSON:| $fFromJSON:>$fHasParseConfigFilekcfg $fEntrya:>: $fEntrya:> $fEntryabbase Data.MaybeMaybeJustNothingControl.Applicative<|> aeson-0.8.1.1Data.Aeson.Types.InternalNull