data Root = RootPosix | RootWindowsVolume Char | RootWindowsCurrentVolume data FilePath = FilePath { pathRoot :: Maybe Root , pathDirectories :: [String] , pathBasename :: Maybe String , pathExtensions :: [String] }