filepath: Library for manipulating FilePaths in a cross platform way.
This package provides functionality for manipulating FilePath values, and is shipped with both GHC and the Haskell Platform. It provides three modules:
System.FilePath.Posix manipulates POSIX/Linux style
FilePathvalues (with/as the path separator).System.FilePath.Windows manipulates Windows style
FilePathvalues (with either\or/as the path separator, and deals with drives).System.FilePath is an alias for the module appropriate to your platform.
All three modules provide the same API, and the same documentation (calling out differences in the different variants).
[Skip to Readme]
Downloads
- filepath-1.4.1.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
| Versions [RSS] | 1.0, 1.1.0.0, 1.1.0.1, 1.1.0.2, 1.1.0.3, 1.1.0.4, 1.2.0.0, 1.2.0.1, 1.3.0.0, 1.3.0.1, 1.3.0.2, 1.4.0.0, 1.4.1.0, 1.4.1.1, 1.4.1.2, 1.4.2, 1.4.2.1, 1.4.2.2, 1.4.100.0, 1.4.100.1, 1.4.100.2, 1.4.100.3, 1.4.100.4, 1.4.101.0, 1.4.102.0, 1.4.200.0, 1.4.200.1, 1.4.300.1, 1.4.300.2, 1.4.301.0, 1.5.0.0, 1.5.2.0, 1.5.3.0, 1.5.4.0 (info) |
|---|---|
| Change log | changelog.md |
| Dependencies | base (>=4 && <4.10) [details] |
| Tested with | ghc ==7.10.1, ghc ==7.8.4, ghc ==7.6.3, ghc ==7.4.2, ghc ==7.2.2 |
| License | BSD-3-Clause |
| Copyright | Neil Mitchell 2005-2015 |
| Author | Neil Mitchell <ndmitchell@gmail.com> |
| Maintainer | Neil Mitchell <ndmitchell@gmail.com> |
| Category | System |
| Home page | https://github.com/haskell/filepath#readme |
| Bug tracker | https://github.com/haskell/filepath/issues |
| Source repo | head: git clone https://github.com/haskell/filepath.git |
| Uploaded | by NeilMitchell at 2015年12月28日T19:08:12Z |
| Distributions | Arch:1.4.300.1, Fedora:1.4.301.0 |
| Reverse Dependencies | 1832 direct, 13785 indirect [details] |
| Downloads | 69568 total (111 in the last 30 days) |
| Rating | 2.25 (votes: 2) [estimated by Bayesian average] |
| Your Rating |
|
| Status | Docs uploaded by user Build status unknown [no reports yet] |
Readme for filepath-1.4.1.0
[back to package description]FilePath Hackage version Linux Build Status Windows Build Status
The filepath package provides functionality for manipulating FilePath values, and is shipped with both GHC and the Haskell Platform. It provides three modules:
System.FilePath.Posixmanipulates POSIX/Linux styleFilePathvalues (with/as the path separator).System.FilePath.Windowsmanipulates Windows styleFilePathvalues (with either\or/as the path separator, and deals with drives).System.FilePathis an alias for the module appropriate to your platform.
All three modules provide the same API, and the same documentation (calling out differences in the different variants).
Should FilePath be an abstract data type?
The answer for this library is "no". While an abstract FilePath has some advantages (mostly type safety), it also has some disadvantages:
- In Haskell the definition is
type FilePath = String, and all file-orientated functions operate on this type alias, e.g.readFile/writeFile. Any abstract type would require wrappers for these functions or lots of casts betweenStringand the abstraction. - It is not immediately obvious what a
FilePathis, and what is just a pureString. For example,/path/file.extis aFilePath. Is/?/path?path?file.ext?.ext?file? - Often it is useful to represent invalid files, e.g.
/foo/*.txtprobably isn't an actual file, but a glob pattern. Other programs usefoo//barfor globs, which is definitely not a file, but might want to be stored as aFilePath. - Some programs use syntactic non-semantic details of the
FilePathto change their behaviour. For example,foo,foo/andfoo/.are all similar, and refer to the same location on disk, but may behave differently when passed to command-line tools. - A useful step to introducing an abstract
FilePathis to reduce the amount of manipulatingFilePathvalues like lists. This library hopes to help in that effort.