Ro8      !"#$%&'()*+,-./012345672010 John MillikinMITjmillikin@gmail.comportable Safe-Inferred+  The type of platformFormat for  is conditionally selected at compilation time. As such it is only intended for direct use with external OS functions and code that expects platformFormatY to be stable across platforms may fail to subsequently compile on a differing platform.For example: on Windows or OSX platformFormat will be 8, and on Linux it will be 9.NIf portability is a concern, restrict usage to functions which do not expose platformFormat directly. Check if a  i is valid; it must not contain any illegal characters, and must have a root appropriate to the current .Split a search path, such as $PATH or  $PYTHONPATH, into a list of  s.Note: The type of platformTextFormatP can change depending upon the underlying compilation platform. Consider using  instead. See  for more information.splitSearchPathString is like 4, but takes a string encoded in the format used by  System.IO.Attempt to convert a   to human readable text.5If the path is decoded successfully, the result is a :k containing the decoded text. Successfully decoded text can be converted back to the original path using ./If the path cannot be decoded, the result is a ; containing an approximation of the original path. If displayed to the user, this value should be accompanied by some warning that the path has an invalid encoding. Approximated text cannot be converted back to the original path.This function ignores the user s locale, and assumes all file paths are encoded in UTF8. If you need to display file paths with an unusual or obscure encoding, use  and then decode them manually. Since: 0.2#Convert human readable text into a  .This function ignores the user s locale, and assumes all file paths are encoded in UTF8. If you need to create file paths with an unusual or obscure encoding, encode them manually and then use . Since: 0.2 Convert a  M to a platform specific format, suitable for use with external OS functions.Note: The type of platformTextFormatP can change depending upon the underlying compilation platform. Consider using  or  instead. See  for more information. Since: 0.3 Convert a  O from a platform specific format, suitable for use with external OS functions.Note: The type of platformTextFormatP can change depending upon the underlying compilation platform. Consider using  or   instead. See  for more information. Since: 0.3Attempt to convert a  1 to a string suitable for use with functions in  System.IOt. The contents of this string are platform dependent, and are not guaranteed to be human readable. For converting  #s to a human readable format, use . Since: 0.3.1 Attempt to parse a  3 from a string suitable for use with functions in  System.IO. Do not use this function for parsing human readable paths, as the character set decoding is platform dependent. For converting human readable text to a  , use . Since: 0.3.1 0A file path with no root, directory, or filename0<= >?@ABCDEFGHIJKL MNOPQRSTUVWXYZ[\]^_+<= >?@ABCDEFGHIJKL MNOPQRSTUVWXYZ <= >?@ABCHGFEDIJKL MNOPQRSTUVWXYZ[\]^_2010 John MillikinMITjmillikin@gmail.comportable Safe-Inferred null p = (p ==  ) Retrieves the   s root.Retrieves the  L s directory. If the path is already a directory, it is returned unchanged.Retrieves the   s parent directory. Retrieve a   s filename component. $filename "foo/bar.txt" == "bar.txt"  Retrieve a  % s directory name. This is only the  file name% of the directory, not its full path. 5dirname "foo/bar/baz.txt" == "bar" dirname "/" == ""  Since: 0.4.1 Retrieve a   s basename component.  basename "foo/bar.txt" == "bar"  Test whether a path is absolute. Test whether a path is relative. Appends two  =s. If the second path is absolute, it is returned unchanged. An alias for . A fold over .2Find the greatest common prefix between a list of  s.Remove a prefix from a path. 2 "/foo/" "/foo/bar/baz.txt" == Just "bar/baz.txt" # "/foo/" "/bar/baz.txt" == Nothing \This function operates on logical prefixes, rather than by counting characters. The prefix "/foo/bar/baz" is interpreted the path ("/foo/bar/", "baz")#, and will be stripped accordingly: . "/foo/bar/baz" "/foo/bar/baz/qux" == Nothing 2 "/foo/bar/baz" "/foo/bar/baz.txt" == Just ".txt"  Since: 0.4.1Remove intermediate "." and ".." directories from a path.  "/foo/./bar" == "/foo/bar" ! "/foo/bar/../baz" == "/foo/baz"  "/foo/../../bar" == "/bar"  "./foo/bar" == "./foo/baz" 5Note that if any of the elements are symbolic links, - may change which file the path resolves to. Since: 0.2Jexpand a FilePath into a list of the root name, directories, and file name Since: 0.4.7Get a   s last extension, or ` if it has no extensions.Get a   s full extension list.Get whether a  # s last extension is the predicate.$Append an extension to the end of a  . 'Append many extensions to the end of a  .! An alias for ." Remove a   s last extension.#Remove all extensions from a  .$ Replace a   s last extension.%Remove all extensions from a  $, and replace them with a new list.& splitExtension p = (" p,  p)' splitExtensions p = (# p,  p) a !"#$%&'bcd  !"#$%&' !"$ #%&' a !"#$%&'bcd2010 John MillikinMITjmillikin@gmail.comportable Safe-Inferred(:Linux, BSD, and other UNIX or UNIX-like operating systems.):Linux, BSD, and other UNIX or UNIX-like operating systems.This is a variant of (P for use with GHC 7.2, which tries to decode file paths in its IO computations.Since: 0.3.3 / 0.4.2*:Linux, BSD, and other UNIX or UNIX-like operating systems.This is a variant of (Y for use with GHC 7.4 or later, which tries to decode file paths in its IO computations.Since: 0.3.7 / 0.4.6+Darwin and Mac OS X.This is almost identical to (!, but with a native path type of 8 rather than 9.Since: 0.3.4 / 0.4.3,Darwin and Mac OS X.This is a variant of +Y for use with GHC 7.2 or later, which tries to decode file paths in its IO computations.Since: 0.3.4 / 0.4.3-Windows and DOS&()*efghijklmnopqrs+,tuvw-xyz{|}~ ()*+,- ()*-+, &()*efghijklmnopqrs+,tuvw-xyz{|}~2010 John MillikinMITjmillikin@gmail.comportable Safe-Inferred /Attempt to convert a   to human readable text.5If the path is decoded successfully, the result is a :k containing the decoded text. Successfully decoded text can be converted back to the original path using 0./If the path cannot be decoded, the result is a ; containing an approximation of the original path. If displayed to the user, this value should be accompanied by some warning that the path has an invalid encoding. Approximated text cannot be converted back to the original path.This function ignores the user s locale, and assumes all file paths are encoded in UTF8. If you need to display file paths with an unusual or obscure encoding, use 4 and then decode them manually. Since: 0.20#Convert human readable text into a  .This function ignores the user s locale, and assumes all file paths are encoded in UTF8. If you need to create file paths with an unusual or obscure encoding, encode them manually and then use 5. Since: 0.21 Check if a  h is valid; it must not contain any illegal characters, and must have a root appropriate to the current .2Split a search path, such as $PATH or  $PYTHONPATH, into a list of  s.3splitSearchPathString is like 24, but takes a string encoded in the format used by  System.IO.4 Convert a  M to a platform specific format, suitable for use with external OS functions.Note: The type platformTextFormatP can change depending upon the underlying compilation platform. Consider using / or 6 instead. See  for more information. Since: 0.35 Convert a  O from a platform specific format, suitable for use with external OS functions.Note: The type platformTextFormatP can change depending upon the underlying compilation platform. Consider using 0 or 7 instead. See  for more information. Since: 0.36Attempt to convert a  1 to a string suitable for use with functions in  System.IOt. The contents of this string are platform dependent, and are not guaranteed to be human readable. For converting  #s to a human readable format, use /. Since: 0.3.17Attempt to parse a  3 from a string suitable for use with functions in  System.IO. Do not use this function for parsing human readable paths, as the character set decoding is platform dependent. For converting human readable text to a  , use 0. Since: 0.3.1 ./01234567(  !"#$%&'./01234567 ./04567123 ./01234567      !"#$%&'()*+,-./0123     456789:;<:;=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_:`abcdefghijklmnopqrstuvwxyz{|}~system-filepath-0.4.13.3Filesystem.Path.RulesFilesystem.PathFilesystem.Path.CurrentOSFilesystem.Path.InternalRulesvalidsplitSearchPathsplitSearchPathStringtoTextfromTextencodedecode encodeString decodeStringFilePathemptynullroot directoryparentfilenamedirnamebasenameabsoluterelativeappendconcat commonPrefix stripPrefixcollapsesplitDirectories extension extensions hasExtension addExtension addExtensions<.> dropExtensiondropExtensionsreplaceExtensionreplaceExtensionssplitExtensionsplitExtensionsposix posix_ghc702 posix_ghc704darwin darwin_ghc702windows currentOS text-1.2.0.4Data.Text.InternalTextbytestring-0.10.4.0Data.ByteString.Internal ByteStringbase Data.EitherRightLeft rulesNamepathRootpathDirectories pathBasenamepathExtensionsRootRootWindowsDoubleQMarkRootWindowsUncRootWindowsCurrentVolumeRootWindowsVolume RootPosix ExtensionBasename DirectoryChunkdotdots filenameChunk rootChunkrootTextdirectoryChunksescapeunescape unescape'unescapeBytes'splitBy textSplitBy parseFilenamemaybeDecodeUtf8 $fShowRules$fNFDataFilePath $fNFDataRoot $fOrdFilePath $fEqFilePath Data.MaybeNothingstripsafeInitsafeHead$fMonoidFilePath posixToTextposixFromChunks posixFromText posixToBytesposixFromBytesprocessInvalidUtf8posixToGhc702StringescapeToGhc702posixFromGhc702StringescapeFromGhc702posixToGhc704StringposixFromGhc704String posixValidposixSplitSearchposixSplitSearchString darwinToTextdarwinToStringdarwinFromStringdarwinSplitSearch winToText dosToText uncToText winFromTextstripUncasedPrefix parseDosRootparseDoubleQmark parseUncRootwinValiddosValiduncValid dropWhileEndwinSplit$fShowFilePath$fIsStringFilePath