Skip to content

Soostone/data-filepath

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

data-filepath

A type safe file path data structure.

File paths describe a path that can be:

  • to a file or a directory
  • either be from the root of a system or be relative to something else

We never want to mix up these types but we want to be able to compose values of these types.

The representation we use is a GADT parametric on

  • Path: what the path is pointing too (file or directory)
  • From: if the path is relative or absolute

The append function is defined as:

(</>) :: FilePath a Directory -> FilePath Relative b -> FilePath a b
p </> RelativePath = p
p </> (DirectoryPath u s) = DirectoryPath (p </> u) s
p </> (FilePath u s) = FilePath (p </> u) s

As such, you can only append to a Directory and you can only append relative paths.

The library also provides tools for working with values, such as safe to / from conversion functions and a quasi-quoter.

Packages

No packages published

Languages

  • Haskell 100.0%