This package provides functionality for manipulating @FilePath@ values, and is shipped with <https://www.haskell.org/ghc/ GHC>. It provides two variants for filepaths:

1. legacy filepaths: @type FilePath = String@

2. operating system abstracted filepaths (@OsPath@): internally unpinned @ShortByteString@ (platform-dependent encoding)

It is recommended to use @OsPath@ when possible, because it is more correct.

For each variant there are three main modules:

* "System.FilePath.Posix" / "System.OsPath.Posix" manipulates POSIX\/Linux style @FilePath@ values (with @\/@ as the path separator).

* "System.FilePath.Windows" / "System.OsPath.Windows" manipulates Windows style @FilePath@ values (with either @\\@ or @\/@ as the path separator, and deals with drives).

* "System.FilePath" / "System.OsPath" for dealing with current platform-specific filepaths

For more powerful string manipulation of @OsPath@, you can use the <https://hackage.haskell.org/package/os-string os-string package> (@OsPath@ is a type synonym for @OsString@).

An introduction into the new API can be found in this
<https://hasufell.github.io/posts/2022-06-29-fixing-haskell-filepaths.html blog post>.
Code examples for the new API can be found <https://github.com/hasufell/filepath-examples here>.