úÎmÐh%G      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF/Unix-like systems (requires flexible instances)unstable%Bryan O'Sullivan <bos@serpentine.com>/Type class for string manipulation over files. Read the entire contents of a G. Write an entire string to a G. @Use a renaming function to generate a new name for a file, then  rename it. function to rename with file to rename :Modify a file in place using the given function. This is F performed by writing to a temporary file, then renaming it on top of  the existing file when done. transformation function name of file to modify ?Modify a file in place using the given function. The original C copy of the file is saved under a new name. This is performed by D writing to a temporary file; renaming the original file to its new > name; then renaming the temporary file to the original name.  Example:  " -- save original file with a ".bak" extension   (<.> "bak") #chooses new name for original file transformation function name of file to modify BModify a file in place using the given function. The new content B is written to a temporary file. Once this is complete, the file D manipulation action is called. Its arguments are the names of the  original and temporary files.  Example:    =  (flip rename) file manipulation action transformation function  everywhereunstable%Bryan O'Sullivan <bos@serpentine.com>HIJKLMNOPQGlob pattern type. RSTUVWX*Match a file name against a glob pattern. 5Match a file name against a glob pattern, but return Y if  the match fails.     everywhereunstable%Bryan O'Sullivan <bos@serpentine.com> =Return a list of names matching a glob pattern. The list is  generated lazily. Z[\   -Unix-like systems (requires newtype deriving)unstable%Bryan O'Sullivan <bos@serpentine.com>C ;Monadic container for file information, allowing for clean ) construction of combinators. Wraps the ]^ monad, but doesn't  allow get or put. _`;Information collected during the traversal of a directory.  file path current recursion depth status of file a Construct a  value. Run the given  on the given  and return its C result. This can be useful if you are writing a function to pass  to $.  Example:   myFoldFunc :: a ->  -> a $ myFoldFunc a i = let useThisFile =  (' > "foo") i $ in if useThisFile ' then fiddleWith a  else a bcReturn the current . +Return the name of the file being visited. $Return the current recursion depth.  Return the d for the current file. e;List the files in the given directory, sorted, and without "."  or "..". !?Search a directory recursively, with recursion controlled by a  ,. Lazily return a sorted list of all files  matching the given . Any errors that occur are " dealt with by the given handler. error handler &control recursion into subdirectories ,decide whether a file appears in the result directory to start searching files that matched the  "?Search a directory recursively, with recursion controlled by a  ,. Lazily return a sorted list of all files  matching the given . Any errors that occur are # ignored, with warnings printed to f. &control recursion into subdirectories ,decide whether a file appears in the result directory to start searching files that matched the  #?Search a directory recursively, with recursion controlled by a  /. Fold over all files found. Any errors that E occur are dealt with by the given handler. The fold is strict, and  run from "left" to "right"#, so the folded function should be B strict in its left argument to avoid space leaks. If you need a  right-to-left fold, use g on the result of !  instead. error handler &control recursion into subdirectories function to fold with seed value for fold directory to start searching final value after folding $?Search a directory recursively, with recursion controlled by a  /. Fold over all files found. Any errors that - occur are ignored, with warnings printed to f . The fold  function is run from "left" to "right", so it should be strict ; in its left argument to avoid space leaks. If you need a  right-to-left fold, use g on the result of !  instead. %Unconditionally return Y. & Return the file name extension.  Example:   & "foo/bar.txt" => ".txt" '2Return the file name, without the directory name. What this means in practice:    ' "foo/bar.txt" => "bar.txt"  Example:   ' > "init.c" (2Return the directory name, without the file name. What this means in practice:    ( "foo/bar.txt" => "foo" Example in a clause:   let hasSuffix = ;  isSuffixOf  in directory ` hasSuffix` "tests" hRun the given action in the i monad (using j) D if the current file is a symlink. Hide errors by wrapping results  in the k monad. )/If the current file is a symbolic link, return l the target  of the link, otherwise m. */If the current file is a symbolic link, return l the status D of the ultimate endpoint of the link. Otherwise (including in the  case of an error), return m.  Example:   , `liftM` * >  +1Return the type of file currently being visited.  Example:   + >  ,>Return the type of a file. This is much more useful for case & analysis than the usual functions on d values. -./012345"Return the permission bits of the n. 6Return Y- if any of the given permission bits is set.  Example:   6 0444 789:Return Y3 if the given path exists, relative to the current  file. For example, if "foo" is being visited, and you call  contains "bar", this combinator will return Y if  "foo/bar" exists. ; Lift a binary operator into the  monad, so that it D becomes a combinator. The left hand side of the combinator should  be a  a,, while the right remains a normal value of  type a. <Return Y if the current file's name matches the given  . =Return Y if the current file' s name does not match the given  . >?@ABCD6This operator is useful to check if bits are set in a  n. EF<  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF<  "$!#,; %&('+:-./0123478956)*<=>?@ABCDEF<   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFo      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVVWXYZ[\]^_`abcdefdefghijklmnoKpqKrst^uvKwxKyzKy{Ky|K}~FileManip-0.3.2System.FilePath.ManipSystem.FilePath.GlobPatternSystem.FilePath.GlobSystem.FilePath.Find StreamablereadAllwriteAll renameWith modifyInPlacemodifyWithBackup modifyWith GlobPattern~~/~ namesMatchingFileTypeUnknownSocket SymbolicLink Directory RegularFile NamedPipeCharacterDevice BlockDeviceRecursionPredicateFilterPredicate FindClauseFileInfoinfoPath infoDepth infoStatus evalClausefileInfofilePathdepth fileStatusfindWithHandlerfindfoldWithHandlerfoldalways extensionfileName directoryreadLink followStatusfileType statusTypedeviceIDfileID fileOwner fileGroupfileSize linkCountspecialDeviceIDfileMode filePermsanyPerms accessTimemodificationTimestatusChangeTimecontainsliftOp~~?/~?==?/=?>?=?<=?.&.?&&?||?baseGHC.IO.Handle.TypesHandle MatchTerm MatchGroup MatchClass MatchCharMatchDirMatchAny MatchLiteral CharClassSRange spanClassinSRange makeClass parseGlob simplifyTerms commonPrefix matchTermsghc-primGHC.BoolTrue listMatches listPlain doesNameExist mtl-1.1.1.0Control.Monad.State.LazyStateFCrunFCmkFIevalFI mkFindClause unix-2.4.0.2System.Posix.Files FileStatusgetDirContentsGHC.IO.Handle.FDstderrGHC.BasefoldrwithLink GHC.TypesIOGHC.IOunsafePerformIO Data.MaybeMaybeJustNothingSystem.Posix.TypesFileMode