úÎ1®/ì     None*+0BPath of some base and type.>Internally is a string. The string can be of two formats only:  File format: file.txt,  foo/bar.txt,  /foo/bar.txtDirectory format: foo/,  /foo/bar/UAll directories end in a trailing separator. There are no duplicate path separators //, no .., no ./, no ~/, etc.Same as .The following property holds: x == y "a show x == show yString ordering.The following property holds: 'show x `compare` show y "a x `compare` yString equality.The following property holds: show x == show y "a x == yNone+0<"Exception when parsing a location.A directory path. A file path.$A relative path; one without a root.An absolute path.mGet a location for an absolute directory. Produces a normalized path which always ends in a path separator.Throws: kGet a location for a relative directory. Produces a normalized path which always ends in a path separator.Throws:  $Get a location for an absolute file.Throws:  #Get a location for a relative file.Throws:  Make a 'Path Abs Dir'.9Remember: due to the nature of absolute paths this (e.g.  /home/fooW) may compile on your platform, but it may not compile on another platform (Windows). Make a 'Path Rel Dir'. Make a 'Path Abs File'.9Remember: due to the nature of absolute paths this (e.g.  /home/fooW) may compile on your platform, but it may not compile on another platform (Windows).Make a 'Path Rel File'. Convert to a  type.Append two paths.6The following cases are valid and the equalities hold: =$(mkAbsDir x) </> $(mkRelDir y) = $(mkAbsDir (x ++ "/" ++ y)) ?$(mkAbsDir x) </> $(mkRelFile y) = $(mkAbsFile (x ++ "/" ++ y)) =$(mkRelDir x) </> $(mkRelDir y) = $(mkRelDir (x ++ "/" ++ y)) ?$(mkRelDir x) </> $(mkRelFile y) = $(mkRelFile (x ++ "/" ++ y))1The following are proven not possible to express: $(mkAbsFile &) </> x $(mkRelFile &) </> x x </> $(mkAbsFile &) x </> $(mkAbsDir &)JStrip directory from path, making it relative to that directory. Returns * if directory is not a parent of the path.The following properties hold: *stripDir parent (parent </> child) = child$Cases which are proven not possible: ,stripDir (a :: Path Abs &) (b :: Path Rel &) *stripDir (a :: Path Rel) (b :: Path Abs &)$In other words the bases must match.>Is p a parent of the given location? Implemented in terms of . The bases must match.:Take the absolute parent directory from the absolute path.The following properties hold: #parent (parent </> child) == parent.On the root, getting the parent is idempotent: parent (parent "/") = "/" Extract the file part of a path.The following properties hold: %filename (parent </> filename a) == a*Extract the last directory name of a path.The following properties hold: #dirname (parent </> dirname a) == a)Internal use for normalizing a directory.*Internal use for normalizing a fileectory.  !     !"      !"#$%& path-0.3.0 Path.InternalPath toFilePathPathParseExceptionDirFileRelAbs parseAbsDir parseRelDir parseAbsFile parseRelFilemkAbsDirmkRelDir mkAbsFile mkRelFilestripDir isParentOfparentfilenamedirname $fShowPath $fOrdPath$fEqPathbaseGHC.IOFilePath Data.MaybeNothing normalizeDir normalizeFileInvalidRelFileInvalidAbsFile InvalidRelDir InvalidAbsDir$fExceptionPathParseException