C      None  !"#$%  "$%  !"#$%None&#Options which can be passed to the  matchWith or  globDirWith functions: J with these you can selectively toggle certain features at matching time. 'Allow *, ?, and **/ to match . at the beginning of paths. (Case-independent matching. )Treat ./( as a no-op in both paths and patterns. (Of course e.g. ../+ means something different and will not be  ignored.) *#Options which can be passed to the + or , N functions: with these you can selectively toggle certain features at compile  time. HNote that some of these options depend on each other: classes can never  occur if ranges aren't allowed, for instance. -Allow character classes, [[:...:]]. .Allow character ranges, [...]. /Allow open ranges, <...>. 0Allow wildcards, * and ?. 1Allow recursive wildcards, **/. 2+Allow path separators in character ranges.  If true, a[/]b3 never matches anything (since character ranges can't & match path separators); if false and 3 is enabled,  a[/]b# matches itself, i.e. a file named ]b in the subdirectory  a[. 3BIf the input is invalid, recover by turning any invalid part into  literals. For instance, with . enabled, [abc is an 3 error by default (unclosed character range); with 3, the  [+ is turned into a literal match, as though . were  disabled. 47An abstract data type representing a compiled pattern. Note that the 59 instance cannot tell you whether two patterns behave in 5 the same way; only whether they compile to the same 4. For instance,  6 "x" and 6 "[x]" may or may not compare equal,  though a match0 will behave the exact same way no matter which 4  is used. 7HThe default set of compilation options: closest to the behaviour of the  zsh shell, with 3 enabled. All options are enabled. 8.Options for POSIX-compliance, as described in  man 7 glob. /, 1, and 2 are disabled. 9FThe default set of execution options: closest to the behaviour of the zsh  shell. Currently identical to :. :.Options for POSIX-compliance, as described in  man 7 glob. )$ is enabled, the rest are disabled. ; Decompiles a 45 object into its textual representation: essentially  the inverse of 6. 2Note, however, that due to internal optimization, decompile . compile is % not the identity function. Instead, compile . decompile is. Be careful with *: ; always produces a < which  can be passed to 6 to get back the same 4.  compileWith  options . decompile is not the identity function unless options is  7. 6?Compiles a glob pattern from its textual representation into a 4  object. KFor the most part, a character matches itself. Recognized operators are as  follows:  ?4 Matches any character except path separators. *? Matches any number of characters except path separators, ( including the empty string. [..]C Matches any of the enclosed characters. Ranges of characters can < be specified by separating the endpoints with a '-'. '-' or  ']'< can be matched by including them as the first character(s) 8 in the list. Never matches path separators: [/] matches I nothing at all. Named character classes can also be matched:  [:x:] within [] specifies the class named x, which matches F certain predefined characters. See below for a full list. [^..] or [!..] Like [..], but matches any character not listed. " Note that [^-x] is not the inverse of [-x], but " the range [^-x]. <m-n>C Matches any integer in the range m to n, inclusive. The range may 8 be open-ended by leaving out either number: "<->", for + instance, matches any integer. **/A Matches any number of characters, including path separators, ( excluding the empty string. Supported character classes:  [:alnum:] Equivalent to " 0-9A-Za-z". [:alpha:] Equivalent to "A-Za-z". [:blank:] Equivalent to "\t ". [:cntrl:] Equivalent to "\0-\x1f\x7f". [:digit:] Equivalent to "0-9". [:graph:] Equivalent to "!-~". [:lower:] Equivalent to "a-z". [:print:] Equivalent to " -~". [:punct:] Equivalent to "!-/:-@[-`{-~". [:space:] Equivalent to "\t-\r ". [:upper:] Equivalent to "A-Z".  [:xdigit:] Equivalent to " 0-9A-Fa-f". %Note that path separators (typically '/' ) have to be matched explicitly  or using the **/7 pattern. In addition, extension separators (typically  '.'C) have to be matched explicitly at the beginning of the pattern or  after any path separator. JIf a system supports multiple path separators, any one of them will match ( any of them. For instance, on Windows, '/' will match itself as well as  '\'. MError recovery will be performed: erroneous operators will not be considered D operators, but matched as literal strings. Such operators include:  An empty [] or [^] or [!]  A [ or < without a matching ] or >  A malformed <>*: e.g. nonnumeric characters or no hyphen  So, e.g. [] will match the string "[]". ,Like 62, but recognizes operators according to the given  * instead of the defaults. If an error occurs and 3 is disabled, = will be called. +A safe version of ,. If an error occurs and 3% is disabled, the error message will  be returned in a >. 1?&@'()*A-./01234BCDEFGHIJKLMNO789:;6,+PQRSTUVWXYZ'&@'()*A-./01234BCDEFGHIJKLMNO789:;6,+PT?&@'()*A-./01234BCD MLKJIHGFENO789:;6,+PQRSTUVWXYZNone[Matches the given 4 against the given \ , returning ]  if the pattern matches and ^ otherwise. _Like [, but applies the given & instead of the defaults. [_`ab[_[_`abNonecMatches each given 4# against the contents of the given \,  recursively. The result pair'.s first component contains the matched paths,  grouped for each given 4*, and the second contains all paths which  were not matched by any 4,. The results are not in any defined order. LThe given directory is prepended to all the matches: the returned paths are D all valid from the point of view of the current working directory.  If multiple 4s match a single \, that path will be included  in multiple groups. Two \4s which can be canonicalized to the same file (e.g. "foo"  and "./foo"6) may appear separately if explicit matching on paths  beginning with "." is done. Looking for ".*/*", for instance, will  cause "./foo" to return as a match but "foo" to not be matched. )This function is different from a simple d over all the contents of M the directory: the matching is performed relative to the directory, so that % for instance the following is true:  I fmap (head.fst) (globDir [compile "*"] dir) == getDirectoryContents dir &(With the exception that that glob won' t match anything beginning with ..)  If the given \ is [], e will be used.  If the given 4$ starts with a drive (as defined by  5), it is not relative to the given directory and the  \: parameter is completely ignored! Similarly, if the given  4: starts with a path separator, only the drive part of the  \< is used. On Posix systems these behaviours are equivalent:  4s starting with / work relative to /. On Windows, 4s  starting with / or \- work relative only to the drive part of the  \ and 4*s starting with absolute paths ignore the  \. MNote that in some cases results outside the given directory may be returned:  for instance the .* pattern matches the .. directory. LAny results deeper than in the given directory are enumerated lazily, using  unsafeInterleaveIO. GDirectories without read permissions are returned as entries but their  contents, of course, are not. fLike c, but applies the given & instead of the  defaults when matching. g A convenience wrapper on top of c, for when you only have one  41 you care about. Returns only the matched paths. hLThe simplest IO function. Finds matches to the given pattern in the current  working directory. Takes a < instead of a 4 to avoid the need  for a call to 6, simplifying usage further. 4Can also be seen as a convenience wrapper on top of g, for when you I want to work in the current directory or have a pattern referring to an  absolute path. i)Factors out the directory component of a 4. Useful in conjunction  with c. )Preserves the number of path separators: commonDirectory (compile  "foo///bar") becomes ("foo///" , compile "bar"). jklmcfghnopqrsticfghi jmlkcfghnopqrsti Noneu Simplifies a 4 object: removes redundant "./", for instance.  The resulting 43 matches the exact same input as the original one,  with some differences:  The output of globDir( will differ: for example, globbing for "./*"  gives "./foo", but after simplification this' ll be only "foo".  Decompiling the simplified 4' will obviously not give the original.  The simplified 4- is a bit faster to match with and uses less 1 memory, since some redundant data is removed. )For the last of the above reasons, if you'!re performance-conscious and not  using globDir, you should always u after calling compile. uuu NonevA 4 which matches the given < literally. 4Handles any embedded path and extension separators. wIMatches any single character except a path separator: corresponds to the  ? operator. xLMatches any number of characters up to a path separator: corresponds to the  * operator. yKMatches any number of characters including path separators: corresponds to  the **/ operator. zHMatches a single character if it is within the (inclusive) range in any  {+ or if it is equal to the character in any >. Corresponds to the  [], [^] and [!] operators.  If the given | is ^+, the result of the match is inverted: the & match succeeds if the character does not match according to the above  rules. }FMatches a number in the given range, which may be open, half-open, or  closed. Corresponds to the <> operator. vwxyz}vwxyz}vwxyz} None&@'()*A-./01234789:;6,+[_cfghiu None~W=d5|<^]>{     \ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~~None    None None !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKILMINOP15?QRSTUVPWXYZ[\]^_`abcdefghIi@jk@jlmnopqIrstuvwxyz{|}~ `IN@j IJIJ@IrIrIIIIJIJIJIIIIII@A@AIIJIJIJIJIJIIIIIIIIIIJIJI@AIIIII@j@j@j@j@jI@jIN@j@j@j@A@A@A@A@A@A@A@AIJIJIJIJIJIIIIIIIIIIIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIrIr I I I I IIIIIIIIIIIIIIIILII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I01I02I3I4I5I6I7I8I9I:I;I<I=I>I?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISTIUIVIWIXIYZIY[IY\IY]IY^IY_IY`IYaIYbINcIdeIdfI0gIhIiIjIkIlImInIoIpIqIrIsItuvwxvwyvwzvw{vw|vw}vw~vwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvvvvvvvvvvvvnemesis-2013.6.13System.NemesisSystem.Nemesis.DSLSystem.FilePath.Glob.UtilsSystem.FilePath.Glob.BaseSystem.FilePath.Glob.MatchSystem.FilePath.Glob.DirectorySystemFilePathSystem.FilePath.Glob.SimplifySystem.FilePath.Glob.PrimitiveSystem.FilePath.GlobSystem.Nemesis.UtilSystem.Nemesis.EnvUnitNemesistaskstarget current_desccurrent_namespaceTasknameactiondeps description namespace full_name display_nameshow_with_ljustrun insert_task run_nemesisdesctaskshcleaninRangeoverlap addToRange increasingSeqisLeftfromLeftdropLeadingZeroes pathPartsdoesDirectoryExistgetRecursiveContents partitionM partitionDLnubOrd MatchOptionsmatchDotsImplicitly ignoreCaseignoreDotSlash CompOptionstryCompileWith compileWithcharacterClassescharacterRanges numberRanges wildcardsrecursiveWildcardspathSepInRanges errorRecoveryPatternghc-prim GHC.ClassesEqcompile compDefault compPosix matchDefault matchPosix decompilebaseGHC.BaseStringGHC.Errerror Data.EitherLeft CharRange unPatternToken LongLiteral AnyDirectoryAnyNonPathSeparator OpenRangeNonPathSeparator PathSeparator ExtSeparatorLiteral tokToLowerliftPtokenize openRange openRangeNum charRangeoptimizeoptimizeCharRange sortCharRange$fMonoidPattern $fReadPattern $fShowPattern $fShowTokenmatchGHC.IO GHC.TypesTrueFalse matchWithbegMatchmatch' inOpenRangeglobDirGHC.Listfilterdirectory-1.2.0.1System.DirectorygetCurrentDirectory globDirWithglobDir1globcommonDirectory TypedPatternAnyDirDirAny globDir'0globDir'matchTypedAndGo didn'tMatchseparate unseparate driveSplitsimplifyliteralsingleWildcardwildcardrecursiveWildcardRightBool numberRangelsrmrm_rf++foldrGHC.Primseqconcatzip System.IOprint Data.Tuplefstsnd otherwisemap$GHC.Num fromIntegerGHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo==>=negatefail>>=>>fmapreturn fromIntegral realToFrac toInteger toRationalBoundedEnum GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowCharDoubleFloatInt integer-gmpGHC.Integer.TypeIntegerOrderingRationalIOEitherLTEQGTminmaxnot||&&<=compare/=idconstflipuntilasTypeOf*abssignumsubtractcurryuncurry Data.MaybeMaybeJustNothingmaybeheadtaillastinitnullfoldlscanlscanl1foldr1scanrscanr1iteraterepeatcycle takeWhile dropWhilespanbreakreverseandoranyallelemnotElem concatMapzip3zipWithzipWith3unzipunzip3 showsPrecshowshowListShowSshowsshowChar showString showParensuccpredtoEnumfromEnumminBoundmaxBound Control.Monad=<<sequence sequence_mapMmapM_ undefinedproperFractiontruncateroundceilingfloorrecipquotremdivmodquotRemdivModevenodd^^gcdlcmGHC.IO.ExceptionIOError userError floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2piexpsqrtlog**logBasesintancosasinatanacossinhtanhcoshasinhatanhacoshText.ParserCombinators.ReadPReadS readsPrecreadList readParenlex Data.Listmaximumminimumfoldl1sumproductlinesunlineswordsunwordseither Text.ReadreadsreadioErrorputCharputStrputStrLngetChargetLine getContentsinteractreadFile writeFile appendFilereadLnreadIOPrelude$! air-2012.5.15 Air.Lights2ll2siosqueeze insert_uniquefork exit_successputsfirst_orsleepto_f!! replicateindexsplitAttakedroplengthdon'tvoidattrace'to_s capitalize ends_with starts_withupperlowerfrom_itwinsplat3splatmap_sndmap_fstonly_sndonly_fst filter_snd filter_fstlist3list2tuple3tuple2swaparen'tisn'tis_notiseq compare_byto_a'to_ato_hto_setto_list concat_maprsortljustrjustindexedhas belongs_tosend_toapplysplit_to in_group_oflabelinglabel_by inner_inject inner_reduce inner_maprejectselectnone_ofinject'injectreduce'reduce cherry_pickslice replace_at insert_at remove_atdowntouptotimessame is_uniqueuniquetenthnintheighthseventhsixthfifthforththirdsecondfirstjoin'join<->-/^<>.Air.Data.Monoid+Air.Control.Monad.ListBuilderrunListBuilderlistexecListBuildermanyone ListBuilderAir.Control.Monad.ObjectBuilderobjectexecObjectBuilder ObjectBuilderAir.Data.DefaultdefDefault $fOrdTask$fEqTask $fShowTask $fDefaultTask$fDefaultNemesis