What is VFS?
Reading through the Haddock documentation, most things are described reasonably well. But then I came upon Foundation.VFS with the modules FilePath, Path, and URI under it. I didn't find anything that defined VFS, though I gather it has something to do with path-like things.
I understand that this is a work-in-progress. But I just wanted to pass on my reaction to a name that is seemingly obscure, which is unlike many of the other names used in this library.
VFS is a reference to Virtual File System which is an operating system common term for abstracting different filesystems related things. It definitely required more thoughts, and documentation, but it's definitely not ready for prime time right now.
The abstraction could be there to handle path like, FilePath, URI, KeyValue stores, etc in a common'ish way
It's not clear to me that what you have there is related to a virtual file system. What I see feels very different.
Also, I see the usefulness of abstracting over file paths across operating systems. But I'm not clear on when I would need/want to abstract over a URI and system file path.
(Normally, I would think of a URI as already being an abstraction of paths that included file: paths, among others. However, I think that kind of abstraction is different from what is intended here, which is about the manipulation of syntactic path parts.)
I think there's a clue in the documentation of PathPrefix and PathSuffix:
in the case of a FilePath, it is a void (i.e.
()) in the case of anURI, it is the schema, host, port...
If there's a significant instance where you use () for a type, it begs the question of whether the class should exist as it is.