module MuCheck.Utils.Common where
import System.FilePath (splitExtension)
choose :: [b] -> Int -> [[b]]
_ `choose` 0 = [[]]
[] `choose` _ = []
(x:xs) `choose` k = (x:) `fmap` (xs `choose` (k1)) ++ xs `choose` k
genFileNames :: String -> [String]
genFileNames s = map newname [1..]
where (name, ext) = splitExtension s
newname i= name ++ "_" ++ show i ++ ext
replace :: Eq a => (a,a) -> [a] -> [a]
replace (o,n) lst = map replaceit lst
where replaceit v
| v == o = n
| otherwise = v
safeHead :: [a] -> Maybe a
safeHead [] = Nothing
safeHead (x:xs) = Just x