diff --git a/modular-prelude-classy/ModularPrelude/Module/Classy.hs b/modular-prelude-classy/ModularPrelude/Module/Classy.hs index a5aac57..6192678 100644 --- a/modular-prelude-classy/ModularPrelude/Module/Classy.hs +++ b/modular-prelude-classy/ModularPrelude/Module/Classy.hs @@ -12,7 +12,7 @@ module ModularPrelude.Module.Classy ) where -import ModularPrelude hiding (empty) +import ModularPrelude import ModularPrelude.Classy import qualified ClassyPrelude as Classy diff --git a/modular-prelude-classy/modular-prelude-classy.cabal b/modular-prelude-classy/modular-prelude-classy.cabal index fcbe582..6f4a053 100644 --- a/modular-prelude-classy/modular-prelude-classy.cabal +++ b/modular-prelude-classy/modular-prelude-classy.cabal @@ -1,5 +1,5 @@ name: modular-prelude-classy -version: 0.1.0.0 +version: 0.1.0.1 synopsis: Reifying ClassyPrelude a la ModularPrelude homepage: https://github.com/DanBurton/modular-prelude#readme @@ -19,5 +19,5 @@ library build-depends: base==4.* , classy-prelude==0.2.* - , modular-prelude==0.3.* + , modular-prelude==0.4.* diff --git a/modular-prelude/ModularPrelude.hs b/modular-prelude/ModularPrelude.hs index 793a1e2..64f1983 100644 --- a/modular-prelude/ModularPrelude.hs +++ b/modular-prelude/ModularPrelude.hs @@ -10,9 +10,10 @@ module ModularPrelude ( module CorePrelude , module Data.Default , Prelude.Read -- should be in CorePrelude + , Prelude.String ) where -import CorePrelude +import CorePrelude hiding (empty, concat, (++), or, elem, zip, zipWith, unzip) import Data.Default import qualified Prelude diff --git a/modular-prelude/ModularPrelude/Module/ByteString.hs b/modular-prelude/ModularPrelude/Module/ByteString.hs index e40e9ae..2339b9e 100644 --- a/modular-prelude/ModularPrelude/Module/ByteString.hs +++ b/modular-prelude/ModularPrelude/Module/ByteString.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.ByteString ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.ByteString as ByteString import qualified Filesystem.Path.CurrentOS as FilePath diff --git a/modular-prelude/ModularPrelude/Module/HashMap.hs b/modular-prelude/ModularPrelude/Module/HashMap.hs index e124c6b..4332591 100644 --- a/modular-prelude/ModularPrelude/Module/HashMap.hs +++ b/modular-prelude/ModularPrelude/Module/HashMap.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.HashMap ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.HashMap.Strict as HashMap diff --git a/modular-prelude/ModularPrelude/Module/HashSet.hs b/modular-prelude/ModularPrelude/Module/HashSet.hs index ddb433f..d988d97 100644 --- a/modular-prelude/ModularPrelude/Module/HashSet.hs +++ b/modular-prelude/ModularPrelude/Module/HashSet.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.HashSet ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.HashSet as HashSet diff --git a/modular-prelude/ModularPrelude/Module/LByteString.hs b/modular-prelude/ModularPrelude/Module/LByteString.hs index a1d6e71..916f8fc 100644 --- a/modular-prelude/ModularPrelude/Module/LByteString.hs +++ b/modular-prelude/ModularPrelude/Module/LByteString.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.LByteString ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.ByteString.Lazy as LByteString import qualified Filesystem.Path.CurrentOS as FilePath diff --git a/modular-prelude/ModularPrelude/Module/LHashMap.hs b/modular-prelude/ModularPrelude/Module/LHashMap.hs index c813173..7a6c629 100644 --- a/modular-prelude/ModularPrelude/Module/LHashMap.hs +++ b/modular-prelude/ModularPrelude/Module/LHashMap.hs @@ -13,7 +13,7 @@ module ModularPrelude.Module.LHashMap ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.HashMap.Lazy as LHashMap diff --git a/modular-prelude/ModularPrelude/Module/LText.hs b/modular-prelude/ModularPrelude/Module/LText.hs index f354466..ff0d945 100644 --- a/modular-prelude/ModularPrelude/Module/LText.hs +++ b/modular-prelude/ModularPrelude/Module/LText.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.LText ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.Text.Lazy as LText import qualified Data.Text.Lazy.IO as LText import qualified Filesystem.Path.CurrentOS as FilePath diff --git a/modular-prelude/ModularPrelude/Module/List.hs b/modular-prelude/ModularPrelude/Module/List.hs index 5213d0b..8c65e2d 100644 --- a/modular-prelude/ModularPrelude/Module/List.hs +++ b/modular-prelude/ModularPrelude/Module/List.hs @@ -10,35 +10,149 @@ module ModularPrelude.Module.List ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.List as List data ListModule = List - { map :: forall a b. (a -> b) -> [a] -> [b] + { -- Basic Functions + (++) :: forall a. [a] -> [a] -> [a] + , head :: forall a. [a] -> a + , last :: forall a. [a] -> a + , tail :: forall a. [a] -> [a] + , init :: forall a. [a] -> [a] + , null :: forall a. [a] -> Bool + , length :: forall a. [a] -> Int + -- List transformations + , map :: forall a b. (a -> b) -> [a] -> [b] + , reverse :: forall a. [a] -> [a] + , intersperse :: forall a. a -> [a] -> [a] + , intercalate :: forall a. [a] -> [[a]] -> [a] + , transpose :: forall a. [[a]] -> [[a]] + , subsequences :: forall a. [a] -> [[a]] + , permutations :: forall a. [a] -> [[a]] + -- Reducing lists (folds) + , foldl :: forall a b. (a -> b -> a) -> a -> [b] -> a + , foldl' :: forall a b. (a -> b -> a) -> a -> [b] -> a + , foldl1 :: forall a. (a -> a -> a) -> [a] -> a + , foldl1' :: forall a. (a -> a -> a) -> [a] -> a + , foldr :: forall a b. (a -> b -> b) -> b -> [a] -> b + , foldr1 :: forall a. (a -> a -> a) -> [a] -> a + -- . Special folds + , concat :: forall a. [[a]] -> [a] , concatMap :: forall a b. (a -> [b]) -> [a] -> [b] - , filter :: forall a. (a -> Bool) -> [a] -> [a] - , length :: forall a. [a] -> Int - , singleton :: forall a. a -> [a] - , null :: forall a. [a] -> Bool - , pack :: forall a. [a] -> [a] - , unpack :: forall a. [a] -> [a] - , fromList :: forall a. [a] -> [a] - , toList :: forall a. [a] -> [a] - , lookup :: forall k a. Eq k => k -> [(k, a)] -> Maybe a - , empty :: forall a. [a] - , insert :: forall a. a -> [a] -> [a] - , delete :: forall a. Eq a => a -> [a] -> [a] - , member :: forall a. Eq a => a -> [a] -> Bool - , stripPrefix :: forall a. Eq a => [a] -> [a] -> Maybe [a] - , break :: forall a. (a -> Bool) -> [a] -> ([a], [a]) - , span :: forall a. (a -> Bool) -> [a] -> ([a], [a]) - , dropWhile :: forall a. (a -> Bool) -> [a] -> [a] - , takeWhile :: forall a. (a -> Bool) -> [a] -> [a] + , and :: [Bool] -> Bool + , or :: [Bool] -> Bool , any :: forall a. (a -> Bool) -> [a] -> Bool , all :: forall a. (a -> Bool) -> [a] -> Bool + , sum :: Num a => [a] -> a + , product :: Num a => [a] -> a + , maximum :: Ord a => [a] -> a + , minimum :: Ord a => [a] -> a + -- Building lists + -- . Scans + , scanl :: forall a b. (a -> b -> a) -> a -> [b] -> [a] + , scanl1 :: forall a. (a -> a -> a) -> [a] -> [a] + , scanr :: forall a b. (a -> b -> b) -> b -> [a] -> [b] + , scanr1 :: forall a. (a -> a -> a) -> [a] -> [a] + -- . Accumulating maps + , mapAccumL :: forall acc x y. (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) + , mapAccumR :: forall acc x y. (acc -> x -> (acc, y)) -> acc -> [x] -> (acc, [y]) + -- . Infinite lists + , iterate :: forall a. (a -> a) -> a -> [a] + , repeat :: forall a. a -> [a] + , replicate :: forall a. Int -> a -> [a] + , cycle :: forall a. [a] -> [a] + -- . Unfolding + , unfoldr :: forall a b. (b -> Maybe (a, b)) -> b -> [a] + -- Sublists + -- . Extracting sublists + , take :: forall a. Int -> [a] -> [a] + , drop :: forall a. Int -> [a] -> [a] , splitAt :: forall a. Int -> [a] -> ([a], [a]) - , fold :: forall a b. (a -> b -> a) -> a -> [b] -> a + , takeWhile :: forall a. (a -> Bool) -> [a] -> [a] + , dropWhile :: forall a. (a -> Bool) -> [a] -> [a] + , dropWhileEnd :: forall a. (a -> Bool) -> [a] -> [a] + , span :: forall a. (a -> Bool) -> [a] -> ([a], [a]) + , break :: forall a. (a -> Bool) -> [a] -> ([a], [a]) + , stripPrefix :: forall a. Eq a => [a] -> [a] -> Maybe [a] + , group :: forall a. Eq a => [a] -> [[a]] + , inits :: forall a. [a] -> [[a]] + , tails :: forall a. [a] -> [[a]] + -- . Predicates + , isPrefixOf :: forall a. Eq a => [a] -> [a] -> Bool + , isSuffixOf :: forall a. Eq a => [a] -> [a] -> Bool + , isInfixOf :: forall a. Eq a => [a] -> [a] -> Bool + -- Searching lists + -- . Searching by equality + , elem :: forall a. Eq a => a -> [a] -> Bool + , notElem :: forall a. Eq a => a -> [a] -> Bool + , lookup :: forall a b. Eq a => a -> [(a, b)] -> Maybe b + -- . Searching with a predicate + , find :: forall a. (a -> Bool) -> [a] -> Maybe a + , filter :: forall a. (a -> Bool) -> [a] -> [a] + , partition :: forall a. (a -> Bool) -> [a] -> ([a], [a]) + -- Indexing lists + , (!!) :: forall a. [a] -> Int -> a + , elemIndex :: forall a. Eq a => a -> [a] -> Maybe Int + , elemIndices :: forall a. Eq a => a -> [a] -> [Int] + , findIndex :: forall a. (a -> Bool) -> [a] -> Maybe Int + , findIndices :: forall a. (a -> Bool) -> [a] -> [Int] + -- Zipping and unzipping lists + , zip :: forall a b. [a] -> [b] -> [(a, b)] + , zip3 :: forall a b c. [a] -> [b] -> [c] -> [(a, b, c)] + , zip4 :: forall a b c d. [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)] + , zip5 :: forall a b c d e. [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)] + , zip6 :: forall a b c d e f. [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)] + , zip7 :: forall a b c d e f g. [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)] + , zipWith :: forall a b c. (a -> b -> c) -> [a] -> [b] -> [c] + , zipWith3 :: forall a b c d. (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] + , zipWith4 :: forall a b c d e. (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e] + , zipWith5 :: forall a b c d e f. (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] + , zipWith6 :: forall a b c d e f g. (a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] + , zipWith7 :: forall a b c d e f g h. (a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h] + , unzip :: forall a b. [(a, b)] -> ([a], [b]) + , unzip3 :: forall a b c. [(a, b, c)] -> ([a], [b], [c]) + , unzip4 :: forall a b c d. [(a, b, c, d)] -> ([a], [b], [c], [d]) + , unzip5 :: forall a b c d e. [(a, b, c, d, e)] -> ([a], [b], [c], [d], [e]) + , unzip6 :: forall a b c d e f. [(a, b, c, d, e, f)] -> ([a], [b], [c], [d], [e], [f]) + , unzip7 :: forall a b c d e f g. [(a, b, c, d, e, f, g)] -> ([a], [b], [c], [d], [e], [f], [g]) + -- Special lists + -- . Functions on strings + , lines :: String -> [String] + , words :: String -> [String] + , unlines :: [String] -> String + , unwords :: [String] -> String + -- . "Set" operations + , nub :: forall a. Eq a => [a] -> [a] + , delete :: forall a. Eq a => a -> [a] -> [a] + , (\\) :: forall a. Eq a => [a] -> [a] -> [a] + , union :: forall a. Eq a => [a] -> [a] -> [a] + , intersect :: forall a. Eq a => [a] -> [a] -> [a] + -- . Ordered lists + , sort :: forall a. Ord a => [a] -> [a] + , insert :: forall a. Ord a => a -> [a] -> [a] + -- Generalized functions + -- . The "By" operations + -- . . User-supplied equality (replacing an Eq context) + , nubBy :: forall a. (a -> a -> Bool) -> [a] -> [a] + , deleteBy :: forall a. (a -> a -> Bool) -> a -> [a] -> [a] + , deleteFirstsBy :: forall a. (a -> a -> Bool) -> [a] -> [a] -> [a] + , unionBy :: forall a. (a -> a -> Bool) -> [a] -> [a] -> [a] + , intersectBy :: forall a. (a -> a -> Bool) -> [a] -> [a] -> [a] + , groupBy :: forall a. (a -> a -> Bool) -> [a] -> [[a]] + -- . . User-supplied comparison (replacing an Ord context) + , sortBy :: forall a. (a -> a -> Ordering) -> [a] -> [a] + , insertBy :: forall a. (a -> a -> Ordering) -> a -> [a] -> [a] + , maximumBy :: forall a. (a -> a -> Ordering) -> [a] -> a + , minimumBy :: forall a. (a -> a -> Ordering) -> [a] -> a + -- . The "generic" operations + , genericLength :: forall i b. Num i => [b] -> i + , genericTake :: forall i a. Integral i => i -> [a] -> [a] + , genericDrop :: forall i a. Integral i => i -> [a] -> [a] + , genericSplitAt :: forall i b. Integral i => i -> [b] -> ([b], [b]) + , genericIndex :: forall a b. Integral a => [b] -> a -> b + , genericReplicate :: forall i a. Integral i => i -> a -> [a] } @@ -47,32 +161,151 @@ class ListImplements interface where instance ListImplements ListModule where _Data_List_ = List - { map = List.map - , concatMap = List.concatMap - , filter = List.filter - , length = List.length - , singleton = return - , null = List.null - , pack = id - , unpack = id - , fromList = id - , toList = id - , lookup = List.lookup - , empty = [] - , insert = (:) -- List.insert instead? - , delete = List.delete - , member = List.elem - , stripPrefix = List.stripPrefix - , break = List.break - , span = List.span - , dropWhile = List.dropWhile - , takeWhile = List.takeWhile - , any = List.any - , all = List.all - , splitAt = List.splitAt - , fold = List.foldl' + { -- Basic functions + (++) = (List.++) + , head = List.head + , last = List.last + , tail = List.tail + , init = List.init + , null = List.null + , length = List.length + -- List transformations + , map = List.map + , reverse = List.reverse + , intersperse = List.intersperse + , intercalate = List.intercalate + , transpose = List.transpose + , subsequences = List.subsequences + , permutations = List.permutations + -- Reducing lists (folds) + , foldl = List.foldl + , foldl' = List.foldl' + , foldl1 = List.foldl1 + , foldl1' = List.foldl1' + , foldr = List.foldr + , foldr1 = List.foldr1 + -- . Special folds + , concat = List.concat + , concatMap = List.concatMap + , and = List.and + , or = List.or + , any = List.any + , all = List.all + , sum = List.sum + , product = List.product + , maximum = List.maximum + , minimum = List.minimum + -- Building lists + -- . Scans + , scanl = List.scanl + , scanl1 = List.scanl1 + , scanr = List.scanr + , scanr1 = List.scanr1 + -- . Accumulating maps + , mapAccumL = List.mapAccumL + , mapAccumR = List.mapAccumR + -- . Infinite lists + , iterate = List.iterate + , repeat = List.repeat + , replicate = List.replicate + , cycle = List.cycle + -- . Unfolding + , unfoldr = List.unfoldr + -- Sublists + -- . Extracting sublists + , take = List.take + , drop = List.drop + , splitAt = List.splitAt + , takeWhile = List.takeWhile + , dropWhile = List.dropWhile + , dropWhileEnd = myDropWhileEnd -- different! + , span = List.span + , break = List.break + , stripPrefix = List.stripPrefix + , group = List.group + , inits = List.inits + , tails = List.tails + -- . Predicates + , isPrefixOf = List.isPrefixOf + , isSuffixOf = List.isSuffixOf + , isInfixOf = List.isInfixOf + -- Searching lists + -- . Searching by equality + , elem = List.elem + , notElem = List.notElem + , lookup = List.lookup + -- . Searching with a predicate + , find = List.find + , filter = List.filter + , partition = List.partition + -- Indexing lists + , (!!) = (List.!!) + , elemIndex = List.elemIndex + , elemIndices = List.elemIndices + , findIndex = List.findIndex + , findIndices = List.findIndices + -- Zipping and unzipping lists + , zip = List.zip + , zip3 = List.zip3 + , zip4 = List.zip4 + , zip5 = List.zip5 + , zip6 = List.zip6 + , zip7 = List.zip7 + , zipWith = List.zipWith + , zipWith3 = List.zipWith3 + , zipWith4 = List.zipWith4 + , zipWith5 = List.zipWith5 + , zipWith6 = List.zipWith6 + , zipWith7 = List.zipWith7 + , unzip = List.unzip + , unzip3 = List.unzip3 + , unzip4 = List.unzip4 + , unzip5 = List.unzip5 + , unzip6 = List.unzip6 + , unzip7 = List.unzip7 + -- Special lists + -- . Functions on strings + , lines = List.lines + , words = List.words + , unlines = List.unlines + , unwords = List.unwords + -- . "Set" operations + , nub = List.nub + , delete = List.delete + , (\\) = (List.\\) + , union = List.union + , intersect = List.intersect + -- . Ordered lists + , sort = List.sort + , insert = List.insert + -- Generalized functions + -- . The "By" operations + -- . . User-supplied equality (replacing an Eq context) + , nubBy = List.nubBy + , deleteBy = List.deleteBy + , deleteFirstsBy = List.deleteFirstsBy + , unionBy = List.unionBy + , intersectBy = List.intersectBy + , groupBy = List.groupBy + -- . . User-supplied comparison (replacing an Ord context) + , sortBy = List.sortBy + , insertBy = List.insertBy + , maximumBy = List.maximumBy + , minimumBy = List.minimumBy + -- . The "generic" operations + , genericLength = List.genericLength + , genericTake = List.genericTake + , genericDrop = List.genericDrop + , genericSplitAt = List.genericSplitAt + , genericIndex = List.genericIndex + , genericReplicate = List.genericReplicate } +-- copied from base 4.5 +-- TODO: CPP the List definition in if base >= 4.5 ? +myDropWhileEnd :: (a -> Bool) -> [a] -> [a] +myDropWhileEnd p = List.foldr step [] where + step x xs = if p x && List.null xs then [] else x : xs instance Default ListModule where def = _Data_List_ diff --git a/modular-prelude/ModularPrelude/Module/Map.hs b/modular-prelude/ModularPrelude/Module/Map.hs index c934ee4..911c3df 100644 --- a/modular-prelude/ModularPrelude/Module/Map.hs +++ b/modular-prelude/ModularPrelude/Module/Map.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.Map ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.Map as Map diff --git a/modular-prelude/ModularPrelude/Module/Set.hs b/modular-prelude/ModularPrelude/Module/Set.hs index b804917..e792b07 100644 --- a/modular-prelude/ModularPrelude/Module/Set.hs +++ b/modular-prelude/ModularPrelude/Module/Set.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.Set ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.Set as Set diff --git a/modular-prelude/ModularPrelude/Module/Text.hs b/modular-prelude/ModularPrelude/Module/Text.hs index 02bbf00..c3b2ef1 100644 --- a/modular-prelude/ModularPrelude/Module/Text.hs +++ b/modular-prelude/ModularPrelude/Module/Text.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.Text ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.Text as Text import qualified Data.Text.IO as Text import qualified Filesystem.Path.CurrentOS as FilePath diff --git a/modular-prelude/ModularPrelude/Module/UVector.hs b/modular-prelude/ModularPrelude/Module/UVector.hs index ed393e7..7c625d0 100644 --- a/modular-prelude/ModularPrelude/Module/UVector.hs +++ b/modular-prelude/ModularPrelude/Module/UVector.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.UVector ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.Vector.Unboxed as UVector diff --git a/modular-prelude/ModularPrelude/Module/Vector.hs b/modular-prelude/ModularPrelude/Module/Vector.hs index 45e5b1b..e155177 100644 --- a/modular-prelude/ModularPrelude/Module/Vector.hs +++ b/modular-prelude/ModularPrelude/Module/Vector.hs @@ -10,7 +10,7 @@ module ModularPrelude.Module.Vector ) where -import ModularPrelude hiding (empty) +import ModularPrelude import qualified Data.Vector as Vector diff --git a/modular-prelude/modular-prelude.cabal b/modular-prelude/modular-prelude.cabal index b4db880..c20ce35 100644 --- a/modular-prelude/modular-prelude.cabal +++ b/modular-prelude/modular-prelude.cabal @@ -1,5 +1,5 @@ name: modular-prelude -version: 0.3.0.0 +version: 0.4.0.0 synopsis: A new Prelude featuring first class modules homepage: https://github.com/DanBurton/modular-prelude#readme @@ -17,29 +17,36 @@ library , ModularPrelude.From - , ModularPrelude.Module.FilePath - , ModularPrelude.Module.Set , ModularPrelude.Module.List + + , ModularPrelude.Module.FilePath + + , ModularPrelude.Module.ByteString , ModularPrelude.Module.LByteString - , ModularPrelude.Module.Vector - , ModularPrelude.Module.HashSet - , ModularPrelude.Module.UVector + , ModularPrelude.Module.Text - , ModularPrelude.Module.Map - , ModularPrelude.Module.LHashMap - , ModularPrelude.Module.ByteString , ModularPrelude.Module.LText + + , ModularPrelude.Module.Set + , ModularPrelude.Module.Map + , ModularPrelude.Module.HashMap + , ModularPrelude.Module.LHashMap + , ModularPrelude.Module.HashSet + + , ModularPrelude.Module.Vector + , ModularPrelude.Module.UVector + + build-depends: basic-prelude >= 0.2.0 && < 0.2.1 + , data-default >= 0.5.0 && < 0.5.1 - build-depends: base==4.* - , basic-prelude==0.2.0.* - , data-default==0.5.0.* - , system-filepath==0.4.* , hashable - , bytestring - , text - , transformers - , containers - , unordered-containers - , vector + + , base >= 4.3 && < 4.6 + , system-filepath >= 0.4 && < 0.5 + , bytestring >= 0.9 && < 0.10 + , text >= 0.11 && < 0.12 + , containers >= 0.4 && < 0.6 + , unordered-containers >= 0.2 && < 0.3 + , vector >= 0.9 && < 0.10