diff options
Diffstat (limited to 'compiler/utils')
-rw-r--r-- | compiler/utils/Bag.hs | 4 | ||||
-rw-r--r-- | compiler/utils/FiniteMap.hs | 7 | ||||
-rw-r--r-- | compiler/utils/OrdList.hs | 3 | ||||
-rw-r--r-- | compiler/utils/UniqDFM.hs | 8 | ||||
-rw-r--r-- | compiler/utils/UniqDSet.hs | 5 | ||||
-rw-r--r-- | compiler/utils/UniqFM.hs | 17 | ||||
-rw-r--r-- | compiler/utils/UniqSet.hs | 5 | ||||
-rw-r--r-- | compiler/utils/Util.hs | 2 |
8 files changed, 28 insertions, 23 deletions
diff --git a/compiler/utils/Bag.hs b/compiler/utils/Bag.hs index 09fddccde1..46bf1f730f 100644 --- a/compiler/utils/Bag.hs +++ b/compiler/utils/Bag.hs @@ -30,7 +30,7 @@ import Util import MonadUtils import Control.Monad import Data.Data -import Data.List ( partition, mapAccumL ) +import Data.List ( partition, mapAccumL, foldl' ) import qualified Data.Foldable as Foldable infixr 3 `consBag` @@ -197,7 +197,7 @@ foldlBag :: (r -> a -> r) -> r foldlBag _ z EmptyBag = z foldlBag k z (UnitBag x) = k z x foldlBag k z (TwoBags b1 b2) = foldlBag k (foldlBag k z b1) b2 -foldlBag k z (ListBag xs) = foldl k z xs +foldlBag k z (ListBag xs) = foldl' k z xs foldrBagM :: (Monad m) => (a -> b -> m b) -> b -> Bag a -> m b foldrBagM _ z EmptyBag = return z diff --git a/compiler/utils/FiniteMap.hs b/compiler/utils/FiniteMap.hs index dccfca10a9..8e3139f968 100644 --- a/compiler/utils/FiniteMap.hs +++ b/compiler/utils/FiniteMap.hs @@ -9,19 +9,20 @@ module FiniteMap ( import Data.Map (Map) import qualified Data.Map as Map +import Data.Foldable (foldl') insertList :: Ord key => [(key,elt)] -> Map key elt -> Map key elt -insertList xs m = foldl (\m (k, v) -> Map.insert k v m) m xs +insertList xs m = foldl' (\m (k, v) -> Map.insert k v m) m xs insertListWith :: Ord key => (elt -> elt -> elt) -> [(key,elt)] -> Map key elt -> Map key elt -insertListWith f xs m0 = foldl (\m (k, v) -> Map.insertWith f k v m) m0 xs +insertListWith f xs m0 = foldl' (\m (k, v) -> Map.insertWith f k v m) m0 xs deleteList :: Ord key => [key] -> Map key elt -> Map key elt -deleteList ks m = foldl (flip Map.delete) m ks +deleteList ks m = foldl' (flip Map.delete) m ks foldRight :: (elt -> a -> a) -> a -> Map key elt -> a foldRight = Map.fold diff --git a/compiler/utils/OrdList.hs b/compiler/utils/OrdList.hs index 625886d0a7..c381b0b774 100644 --- a/compiler/utils/OrdList.hs +++ b/compiler/utils/OrdList.hs @@ -16,6 +16,7 @@ module OrdList ( mapOL, fromOL, toOL, foldrOL, foldlOL ) where +import Data.Foldable ( foldl' ) import Outputable #if __GLASGOW_HASKELL__ > 710 @@ -115,7 +116,7 @@ foldlOL k z (One x) = k z x foldlOL k z (Cons x xs) = foldlOL k (k z x) xs foldlOL k z (Snoc xs x) = k (foldlOL k z xs) x foldlOL k z (Two b1 b2) = foldlOL k (foldlOL k z b1) b2 -foldlOL k z (Many xs) = foldl k z xs +foldlOL k z (Many xs) = foldl' k z xs toOL :: [a] -> OrdList a toOL [] = None diff --git a/compiler/utils/UniqDFM.hs b/compiler/utils/UniqDFM.hs index 1b3cade93a..4536c0fad8 100644 --- a/compiler/utils/UniqDFM.hs +++ b/compiler/utils/UniqDFM.hs @@ -58,7 +58,7 @@ import Outputable import qualified Data.IntMap as M import Data.Typeable import Data.Data -import Data.List (sortBy) +import Data.List (sortBy, foldl') import Data.Function (on) import UniqFM (UniqFM, listToUFM_Directly, ufmToList, ufmToIntMap) @@ -145,7 +145,7 @@ addToUDFM_Directly (UDFM m i) u v = UDFM (M.insert (getKey u) (TaggedVal v i) m) (i + 1) addListToUDFM_Directly :: UniqDFM elt -> [(Unique,elt)] -> UniqDFM elt -addListToUDFM_Directly = foldl (\m (k, v) -> addToUDFM_Directly m k v) +addListToUDFM_Directly = foldl' (\m (k, v) -> addToUDFM_Directly m k v) delFromUDFM :: Uniquable key => UniqDFM elt -> key -> UniqDFM elt delFromUDFM (UDFM m i) k = UDFM (M.delete (getKey $ getUnique k) m) i @@ -253,7 +253,7 @@ partitionUDFM p (UDFM m i) = -- | Delete a list of elements from a UniqDFM delListFromUDFM :: Uniquable key => UniqDFM elt -> [key] -> UniqDFM elt -delListFromUDFM = foldl delFromUDFM +delListFromUDFM = foldl' delFromUDFM -- | This allows for lossy conversion from UniqDFM to UniqFM udfmToUfm :: UniqDFM elt -> UniqFM elt @@ -261,7 +261,7 @@ udfmToUfm (UDFM m _i) = listToUFM_Directly [(getUnique k, taggedFst tv) | (k, tv) <- M.toList m] listToUDFM_Directly :: [(Unique, elt)] -> UniqDFM elt -listToUDFM_Directly = foldl (\m (u, v) -> addToUDFM_Directly m u v) emptyUDFM +listToUDFM_Directly = foldl' (\m (u, v) -> addToUDFM_Directly m u v) emptyUDFM -- | Apply a function to a particular element adjustUDFM :: Uniquable key => (elt -> elt) -> UniqDFM elt -> key -> UniqDFM elt diff --git a/compiler/utils/UniqDSet.hs b/compiler/utils/UniqDSet.hs index 90e9996d1a..191b797072 100644 --- a/compiler/utils/UniqDSet.hs +++ b/compiler/utils/UniqDSet.hs @@ -32,6 +32,7 @@ module UniqDSet ( partitionUniqDSet ) where +import Data.Foldable (foldl') import UniqDFM import UniqSet import Unique @@ -45,13 +46,13 @@ unitUniqDSet :: Uniquable a => a -> UniqDSet a unitUniqDSet x = unitUDFM x x mkUniqDSet :: Uniquable a => [a] -> UniqDSet a -mkUniqDSet = foldl addOneToUniqDSet emptyUniqDSet +mkUniqDSet = foldl' addOneToUniqDSet emptyUniqDSet addOneToUniqDSet :: Uniquable a => UniqDSet a -> a -> UniqDSet a addOneToUniqDSet set x = addToUDFM set x x addListToUniqDSet :: Uniquable a => UniqDSet a -> [a] -> UniqDSet a -addListToUniqDSet = foldl addOneToUniqDSet +addListToUniqDSet = foldl' addOneToUniqDSet delOneFromUniqDSet :: Uniquable a => UniqDSet a -> a -> UniqDSet a delOneFromUniqDSet = delFromUDFM diff --git a/compiler/utils/UniqFM.hs b/compiler/utils/UniqFM.hs index ed82fee4ec..bb6eefc63f 100644 --- a/compiler/utils/UniqFM.hs +++ b/compiler/utils/UniqFM.hs @@ -79,6 +79,7 @@ import qualified Data.IntMap as M import qualified Data.IntSet as S import qualified Data.Foldable as Foldable import qualified Data.Traversable as Traversable +import Data.Foldable ( foldl' ) import Data.Typeable import Data.Data #if __GLASGOW_HASKELL__ > 710 @@ -231,14 +232,14 @@ emptyUFM = UFM M.empty isNullUFM (UFM m) = M.null m unitUFM k v = UFM (M.singleton (getKey $ getUnique k) v) unitDirectlyUFM u v = UFM (M.singleton (getKey u) v) -listToUFM = foldl (\m (k, v) -> addToUFM m k v) emptyUFM -listToUFM_Directly = foldl (\m (u, v) -> addToUFM_Directly m u v) emptyUFM -listToUFM_C f = foldl (\m (k, v) -> addToUFM_C f m k v) emptyUFM +listToUFM = foldl' (\m (k, v) -> addToUFM m k v) emptyUFM +listToUFM_Directly = foldl' (\m (u, v) -> addToUFM_Directly m u v) emptyUFM +listToUFM_C f = foldl' (\m (k, v) -> addToUFM_C f m k v) emptyUFM alterUFM f (UFM m) k = UFM (M.alter f (getKey $ getUnique k) m) addToUFM (UFM m) k v = UFM (M.insert (getKey $ getUnique k) v m) -addListToUFM = foldl (\m (k, v) -> addToUFM m k v) -addListToUFM_Directly = foldl (\m (k, v) -> addToUFM_Directly m k v) +addListToUFM = foldl' (\m (k, v) -> addToUFM m k v) +addListToUFM_Directly = foldl' (\m (k, v) -> addToUFM_Directly m k v) addToUFM_Directly (UFM m) u v = UFM (M.insert (getKey u) v m) -- Arguments of combining function of M.insertWith and addToUFM_C are flipped. @@ -246,15 +247,15 @@ addToUFM_C f (UFM m) k v = UFM (M.insertWith (flip f) (getKey $ getUnique k) v m) addToUFM_Acc exi new (UFM m) k v = UFM (M.insertWith (\_new old -> exi v old) (getKey $ getUnique k) (new v) m) -addListToUFM_C f = foldl (\m (k, v) -> addToUFM_C f m k v) +addListToUFM_C f = foldl' (\m (k, v) -> addToUFM_C f m k v) adjustUFM f (UFM m) k = UFM (M.adjust f (getKey $ getUnique k) m) adjustUFM_Directly f (UFM m) u = UFM (M.adjust f (getKey u) m) delFromUFM (UFM m) k = UFM (M.delete (getKey $ getUnique k) m) -delListFromUFM = foldl delFromUFM +delListFromUFM = foldl' delFromUFM delFromUFM_Directly (UFM m) u = UFM (M.delete (getKey u) m) -delListFromUFM_Directly = foldl delFromUFM_Directly +delListFromUFM_Directly = foldl' delFromUFM_Directly -- M.union is left-biased, plusUFM should be right-biased. plusUFM (UFM x) (UFM y) = UFM (M.union y x) diff --git a/compiler/utils/UniqSet.hs b/compiler/utils/UniqSet.hs index a316f53370..32a5a22c78 100644 --- a/compiler/utils/UniqSet.hs +++ b/compiler/utils/UniqSet.hs @@ -33,6 +33,7 @@ module UniqSet ( partitionUniqSet ) where +import Data.Foldable ( foldl' ) import UniqFM import Unique @@ -93,11 +94,11 @@ type UniqSet a = UniqFM a emptyUniqSet = emptyUFM unitUniqSet x = unitUFM x x -mkUniqSet = foldl addOneToUniqSet emptyUniqSet +mkUniqSet = foldl' addOneToUniqSet emptyUniqSet addOneToUniqSet set x = addToUFM set x x addOneToUniqSet_C f set x = addToUFM_C f set x x -addListToUniqSet = foldl addOneToUniqSet +addListToUniqSet = foldl' addOneToUniqSet delOneFromUniqSet = delFromUFM delOneFromUniqSet_Directly = delFromUFM_Directly diff --git a/compiler/utils/Util.hs b/compiler/utils/Util.hs index ff0f45f725..5bfde60f5f 100644 --- a/compiler/utils/Util.hs +++ b/compiler/utils/Util.hs @@ -1001,7 +1001,7 @@ readRational__ r = do readDec s = do (ds,r) <- nonnull isDigit s - return (foldl1 (\n d -> n * 10 + d) [ ord d - ord '0' | d <- ds ], + return (foldl1' (\n d -> n * 10 + d) [ ord d - ord '0' | d <- ds ], r) lexDecDigits = nonnull isDigit |