Uniform methods to access data in files.
Goals:
- same functions with identical semantics independent of representation
- all functions are total (or become so using `Maybe` or `Either`)
- performance is NOT a goal - once the program logic is confirmed and tested, performance improvements can be achieved based on observations. The goal for "uniform" is reducing the complexity for the designer of a program - performance improvement come when the logic is correct.
Specifically:
- a file path can be given as `Filepath` (which is a string) or as a `Path`, which different types for directories and files and for absolute and relative path, to reduce confusing.
- functions to work on file path independent of representation
- functions to access file with either type of path representation
- operations are total; failures of file operations are signaled by ErrorT or Either returns.
Experimentally:
- `TypedFile.hs` tries to extend a type concept from the representation in memory to a representation on file (indicated by the file extension). It proposes a set of functions to read structured files into structured data - selected by the extensions.