diff --git a/compiler/utils/UniqFM.lhs b/compiler/utils/UniqFM.lhs index 259689c4546317c4ee1ea950cea54243295dbc9c..d4a270dd0e61678462f3eccfb9b44049acc531d7 100644 --- a/compiler/utils/UniqFM.lhs +++ b/compiler/utils/UniqFM.lhs @@ -22,50 +22,43 @@ of arguments of combining function. \begin{code} {-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# OPTIONS -fno-warn-tabs #-} --- The above warning supression flag is a temporary kludge. --- While working on this module you are encouraged to remove it and --- detab the module (please do the detabbing in a separate patch). See --- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#TabsvsSpaces --- for details - {-# OPTIONS -Wall #-} module UniqFM ( - -- * Unique-keyed mappings - UniqFM, -- abstract type + -- * Unique-keyed mappings + UniqFM, -- abstract type -- ** Manipulating those mappings - emptyUFM, - unitUFM, - unitDirectlyUFM, - listToUFM, - listToUFM_Directly, - listToUFM_C, - addToUFM,addToUFM_C,addToUFM_Acc, - addListToUFM,addListToUFM_C, - addToUFM_Directly, - addListToUFM_Directly, - adjustUFM, alterUFM, - adjustUFM_Directly, - delFromUFM, - delFromUFM_Directly, - delListFromUFM, - plusUFM, - plusUFM_C, - minusUFM, - intersectUFM, - intersectUFM_C, - foldUFM, foldUFM_Directly, - mapUFM, mapUFM_Directly, - elemUFM, elemUFM_Directly, - filterUFM, filterUFM_Directly, - sizeUFM, - isNullUFM, - lookupUFM, lookupUFM_Directly, - lookupWithDefaultUFM, lookupWithDefaultUFM_Directly, - eltsUFM, keysUFM, splitUFM, - ufmToList, - joinUFM + emptyUFM, + unitUFM, + unitDirectlyUFM, + listToUFM, + listToUFM_Directly, + listToUFM_C, + addToUFM,addToUFM_C,addToUFM_Acc, + addListToUFM,addListToUFM_C, + addToUFM_Directly, + addListToUFM_Directly, + adjustUFM, alterUFM, + adjustUFM_Directly, + delFromUFM, + delFromUFM_Directly, + delListFromUFM, + plusUFM, + plusUFM_C, + minusUFM, + intersectUFM, + intersectUFM_C, + foldUFM, foldUFM_Directly, + mapUFM, mapUFM_Directly, + elemUFM, elemUFM_Directly, + filterUFM, filterUFM_Directly, + sizeUFM, + isNullUFM, + lookupUFM, lookupUFM_Directly, + lookupWithDefaultUFM, lookupWithDefaultUFM_Directly, + eltsUFM, keysUFM, splitUFM, + ufmToList, + joinUFM ) where import Unique ( Uniquable(..), Unique, getKey ) @@ -82,95 +75,95 @@ import Data.Data \end{code} %************************************************************************ -%* * +%* * \subsection{The signature of the module} -%* * +%* * %************************************************************************ \begin{code} -emptyUFM :: UniqFM elt -isNullUFM :: UniqFM elt -> Bool -unitUFM :: Uniquable key => key -> elt -> UniqFM elt +emptyUFM :: UniqFM elt +isNullUFM :: UniqFM elt -> Bool +unitUFM :: Uniquable key => key -> elt -> UniqFM elt unitDirectlyUFM -- got the Unique already - :: Unique -> elt -> UniqFM elt -listToUFM :: Uniquable key => [(key,elt)] -> UniqFM elt + :: Unique -> elt -> UniqFM elt +listToUFM :: Uniquable key => [(key,elt)] -> UniqFM elt listToUFM_Directly - :: [(Unique, elt)] -> UniqFM elt -listToUFM_C :: Uniquable key => (elt -> elt -> elt) - -> [(key, elt)] + :: [(Unique, elt)] -> UniqFM elt +listToUFM_C :: Uniquable key => (elt -> elt -> elt) + -> [(key, elt)] -> UniqFM elt -addToUFM :: Uniquable key => UniqFM elt -> key -> elt -> UniqFM elt -addListToUFM :: Uniquable key => UniqFM elt -> [(key,elt)] -> UniqFM elt +addToUFM :: Uniquable key => UniqFM elt -> key -> elt -> UniqFM elt +addListToUFM :: Uniquable key => UniqFM elt -> [(key,elt)] -> UniqFM elt addListToUFM_Directly :: UniqFM elt -> [(Unique,elt)] -> UniqFM elt addToUFM_Directly - :: UniqFM elt -> Unique -> elt -> UniqFM elt + :: UniqFM elt -> Unique -> elt -> UniqFM elt -addToUFM_C :: Uniquable key => (elt -> elt -> elt) -- old -> new -> result - -> UniqFM elt -- old - -> key -> elt -- new - -> UniqFM elt -- result +addToUFM_C :: Uniquable key => (elt -> elt -> elt) -- old -> new -> result + -> UniqFM elt -- old + -> key -> elt -- new + -> UniqFM elt -- result -addToUFM_Acc :: Uniquable key => - (elt -> elts -> elts) -- Add to existing - -> (elt -> elts) -- New element - -> UniqFM elts -- old - -> key -> elt -- new - -> UniqFM elts -- result +addToUFM_Acc :: Uniquable key => + (elt -> elts -> elts) -- Add to existing + -> (elt -> elts) -- New element + -> UniqFM elts -- old + -> key -> elt -- new + -> UniqFM elts -- result -alterUFM :: Uniquable key => +alterUFM :: Uniquable key => (Maybe elt -> Maybe elt) -- How to adjust - -> UniqFM elt -- old - -> key -- new - -> UniqFM elt -- result + -> UniqFM elt -- old + -> key -- new + -> UniqFM elt -- result -addListToUFM_C :: Uniquable key => (elt -> elt -> elt) - -> UniqFM elt -> [(key,elt)] - -> UniqFM elt +addListToUFM_C :: Uniquable key => (elt -> elt -> elt) + -> UniqFM elt -> [(key,elt)] + -> UniqFM elt -adjustUFM :: Uniquable key => (elt -> elt) -> UniqFM elt -> key -> UniqFM elt +adjustUFM :: Uniquable key => (elt -> elt) -> UniqFM elt -> key -> UniqFM elt adjustUFM_Directly :: (elt -> elt) -> UniqFM elt -> Unique -> UniqFM elt -delFromUFM :: Uniquable key => UniqFM elt -> key -> UniqFM elt -delListFromUFM :: Uniquable key => UniqFM elt -> [key] -> UniqFM elt +delFromUFM :: Uniquable key => UniqFM elt -> key -> UniqFM elt +delListFromUFM :: Uniquable key => UniqFM elt -> [key] -> UniqFM elt delFromUFM_Directly :: UniqFM elt -> Unique -> UniqFM elt -- Bindings in right argument shadow those in the left -plusUFM :: UniqFM elt -> UniqFM elt -> UniqFM elt +plusUFM :: UniqFM elt -> UniqFM elt -> UniqFM elt -plusUFM_C :: (elt -> elt -> elt) - -> UniqFM elt -> UniqFM elt -> UniqFM elt +plusUFM_C :: (elt -> elt -> elt) + -> UniqFM elt -> UniqFM elt -> UniqFM elt -minusUFM :: UniqFM elt1 -> UniqFM elt2 -> UniqFM elt1 +minusUFM :: UniqFM elt1 -> UniqFM elt2 -> UniqFM elt1 -intersectUFM :: UniqFM elt -> UniqFM elt -> UniqFM elt -intersectUFM_C :: (elt1 -> elt2 -> elt3) - -> UniqFM elt1 -> UniqFM elt2 -> UniqFM elt3 +intersectUFM :: UniqFM elt -> UniqFM elt -> UniqFM elt +intersectUFM_C :: (elt1 -> elt2 -> elt3) + -> UniqFM elt1 -> UniqFM elt2 -> UniqFM elt3 -foldUFM :: (elt -> a -> a) -> a -> UniqFM elt -> a +foldUFM :: (elt -> a -> a) -> a -> UniqFM elt -> a foldUFM_Directly:: (Unique -> elt -> a -> a) -> a -> UniqFM elt -> a -mapUFM :: (elt1 -> elt2) -> UniqFM elt1 -> UniqFM elt2 +mapUFM :: (elt1 -> elt2) -> UniqFM elt1 -> UniqFM elt2 mapUFM_Directly :: (Unique -> elt1 -> elt2) -> UniqFM elt1 -> UniqFM elt2 -filterUFM :: (elt -> Bool) -> UniqFM elt -> UniqFM elt +filterUFM :: (elt -> Bool) -> UniqFM elt -> UniqFM elt filterUFM_Directly :: (Unique -> elt -> Bool) -> UniqFM elt -> UniqFM elt -sizeUFM :: UniqFM elt -> Int ---hashUFM :: UniqFM elt -> Int -elemUFM :: Uniquable key => key -> UniqFM elt -> Bool +sizeUFM :: UniqFM elt -> Int +--hashUFM :: UniqFM elt -> Int +elemUFM :: Uniquable key => key -> UniqFM elt -> Bool elemUFM_Directly:: Unique -> UniqFM elt -> Bool splitUFM :: Uniquable key => UniqFM elt -> key -> (UniqFM elt, Maybe elt, UniqFM elt) - -- Splits a UFM into things less than, equal to, and greater than the key -lookupUFM :: Uniquable key => UniqFM elt -> key -> Maybe elt + -- Splits a UFM into things less than, equal to, and greater than the key +lookupUFM :: Uniquable key => UniqFM elt -> key -> Maybe elt lookupUFM_Directly -- when you've got the Unique already - :: UniqFM elt -> Unique -> Maybe elt + :: UniqFM elt -> Unique -> Maybe elt lookupWithDefaultUFM - :: Uniquable key => UniqFM elt -> elt -> key -> elt + :: Uniquable key => UniqFM elt -> elt -> key -> elt lookupWithDefaultUFM_Directly - :: UniqFM elt -> elt -> Unique -> elt -keysUFM :: UniqFM elt -> [Unique] -- Get the keys -eltsUFM :: UniqFM elt -> [elt] -ufmToList :: UniqFM elt -> [(Unique, elt)] + :: UniqFM elt -> elt -> Unique -> elt +keysUFM :: UniqFM elt -> [Unique] -- Get the keys +eltsUFM :: UniqFM elt -> [elt] +ufmToList :: UniqFM elt -> [(Unique, elt)] \end{code} @@ -191,7 +184,7 @@ instance Eq ele => Eq (UniqFM ele) where instance Functor UniqFM where fmap f = fmap f . unUFM -instance Traversable.Traversable UniqFM where +instance Traversable.Traversable UniqFM where traverse f = Traversable.traverse f . unUFM -}