Name: pathtype Version: 0.5.2 Synopsis: Type-safe replacement for System.FilePath etc Description: This package provides type-safe access to filepath manipulations. . "System.Path" is designed to be used instead of "System.FilePath". (It is intended to provide versions of functions from that module which have equivalent functionality but are more typesafe). "System.Path.Directory" is a companion module providing a type-safe alternative to "System.Directory". . The heart of this module is the @'Path' ar fd@ abstract type which represents file and directory paths. The idea is that there are two phantom type parameters - the first should be 'Abs' or 'Rel', and the second 'File' or 'Dir'. A number of type synonyms are provided for common types: . > type AbsFile = Path Abs File > type RelFile = Path Rel File > type AbsDir = Path Abs Dir > type RelDir = Path Rel Dir > > type AbsPath fd = Path Abs fd > type RelPath fd = Path Rel fd > type FilePath ar = Path ar File > type DirPath ar = Path ar Dir . The type of the 'combine' (aka '') function gives the idea: . > () :: DirPath ar -> RelPath fd -> Path ar fd . Together this enables us to give more meaningful types to a lot of the functions, and (hopefully) catch a bunch more errors at compile time. . Overloaded string literals are supported, so with the @OverloadedStrings@ extension enabled, you can: . > f :: FilePath ar > f = "tmp" "someFile" <.> "ext" . If you don't want to use @OverloadedStrings@, you can use the construction fns: . > f :: FilePath ar > f = asDirPath "tmp" asFilePath "someFile" <.> "ext" . or... . > f :: FilePath ar > f = asPath "tmp" asPath "someFile" <.> "ext" . or just... . > f :: FilePath ar > f = asPath "tmp/someFile.ext" . One point to note is that whether one of these is interpreted as an absolute or a relative path depends on the type at which it is used: . > *System.Path> f :: AbsFile > /tmp/someFile.ext > *System.Path> f :: RelFile > tmp/someFile.ext . You will typically want to import as follows: . > import Prelude hiding (FilePath) > import System.Path > import System.Path.Directory > import System.Path.IO . The basic API (and properties satisfied) are heavily influenced by Neil Mitchell's "System.FilePath" module. . . Stability: experimental License: BSD3 Category: System License-file: LICENSE Author: Ben Moseley Maintainer: ben@moseley.name HomePage: http://code.haskell.org/pathtype Build-Type: Simple Cabal-Version: >=1.6 Extra-Source-Files: Test.hs, TestTemplate.hs, System/Path/Internal.hs source-repository head type: darcs location: http://code.haskell.org/pathtype Library Build-Depends: base >= 4 && < 5, directory >= 1 && < 2, old-time >= 1.0 && < 2, QuickCheck >= 2.1.0.1 && < 3 Exposed-modules: System.Path, System.Path.Directory, System.Path.IO, System.Path.Posix, System.Path.Windows Extensions: EmptyDataDecls, PatternGuards, FlexibleInstances, Rank2Types, OverloadedStrings, CPP