CurryInfo: filepath-3.0.0 / System.FilePath.splitDrive

definition:
splitDrive :: FilePath -> (FilePath, FilePath)
splitDrive x | isPosix    = span (== '/') x
             | isJust dl  = fromJust dl
             | isJust unc = fromJust unc
             | isJust shr = fromJust shr
             | otherwise  = ("",x)
    where dl  = readDriveLetter x
          unc = readDriveUNC x
          shr = readDriveShare x
demand:
argument 1
deterministic:
deterministic operation
documentation:
-- | Split a path into a drive and a path.
--   On Unix, \/ is a Drive.
--
-- > uncurry (++) (splitDrive x) == x
-- > Windows: splitDrive "file" == ("","file")
-- > Windows: splitDrive "c:/file" == ("c:/","file")
-- > Windows: splitDrive "c:\\file" == ("c:\\","file")
-- > Windows: splitDrive "\\\\shared\\test" == ("\\\\shared\\","test")
-- > Windows: splitDrive "\\\\shared" == ("\\\\shared","")
-- > Windows: splitDrive "\\\\?\\UNC\\shared\\file" == ("\\\\?\\UNC\\shared\\","file")
-- > Windows: splitDrive "\\\\?\\UNCshared\\file" == ("\\\\?\\","UNCshared\\file")
-- > Windows: splitDrive "\\\\?\\d:\\file" == ("\\\\?\\d:\\","file")
-- > Windows: splitDrive "/d" == ("","/d")
-- > Posix:   splitDrive "/test" == ("/","test")
-- > Posix:   splitDrive "//test" == ("//","test")
-- > Posix:   splitDrive "test/file" == ("","test/file")
-- > Posix:   splitDrive "file" == ("","file")
failfree:
_
indeterministic:
referentially transparent operation
infix:
no fixity defined
iotype:
{(_) |-> _}
name:
splitDrive
precedence:
no precedence defined
result-values:
_
signature:
String -> (String, String)
solution-complete:
operation might suspend on free variables
terminating:
possibly non-terminating
totally-defined:
possibly non-reducible on same data term