module System.Path.Internal.System where
import qualified Control.Monad.Trans.State as MS
import Control.Applicative ((<$>))
import Data.Tagged (Tagged)
import Test.QuickCheck (Gen)
class System os where
pathSeparator :: Tagged os Char
pathSeparators :: Tagged os [Char]
pathSeparators = (Char -> [Char] -> [Char]
forall a. a -> [a] -> [a]
:[]) (Char -> [Char]) -> Tagged os Char -> Tagged os [Char]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Tagged os Char
forall os. System os => Tagged os Char
pathSeparator
isPathSeparator :: Tagged os (Char -> Bool)
isPathSeparator = (Char -> [Char] -> Bool) -> [Char] -> Char -> Bool
forall a b c. (a -> b -> c) -> b -> a -> c
flip Char -> [Char] -> Bool
forall a. Eq a => a -> [a] -> Bool
forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
elem ([Char] -> Char -> Bool)
-> Tagged os [Char] -> Tagged os (Char -> Bool)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Tagged os [Char]
forall os. System os => Tagged os [Char]
pathSeparators
splitAbsolute :: Tagged os (MS.State String String)
canonicalize :: Tagged os (String -> String)
splitDrive :: Tagged os (MS.State String String)
genDrive :: Tagged os (Gen String)