diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2011-07-28 08:15:27 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2011-07-28 08:15:27 +0100 |
commit | 7910fce2c91da802801f6faa730478fbdfbdd00e (patch) | |
tree | 8eaad865f63beae37e6931d4f1ae0d591fb12219 /compiler/utils | |
parent | adc3fb884bc53d229faf9f599fb3f890cadeccb1 (diff) | |
download | haskell-7910fce2c91da802801f6faa730478fbdfbdd00e.tar.gz |
Add "alter" functions to UniqFM, VarEnv, NameEnv
I need these for a trie data structure I'm working on
Diffstat (limited to 'compiler/utils')
-rw-r--r-- | compiler/utils/UniqFM.lhs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/compiler/utils/UniqFM.lhs b/compiler/utils/UniqFM.lhs index 7cbc3dbcfb..0cd9235cad 100644 --- a/compiler/utils/UniqFM.lhs +++ b/compiler/utils/UniqFM.lhs @@ -36,7 +36,7 @@ module UniqFM ( addListToUFM,addListToUFM_C, addToUFM_Directly, addListToUFM_Directly, - adjustUFM, + adjustUFM, alterUFM, adjustUFM_Directly, delFromUFM, delFromUFM_Directly, @@ -108,6 +108,12 @@ addToUFM_Acc :: Uniquable key => -> key -> elt -- new -> UniqFM elts -- result +alterUFM :: Uniquable key => + (Maybe elt -> Maybe elt) -- How to adjust + -> UniqFM elt -- old + -> key -- new + -> UniqFM elt -- result + addListToUFM_C :: Uniquable key => (elt -> elt -> elt) -> UniqFM elt -> [(key,elt)] -> UniqFM elt @@ -182,7 +188,8 @@ 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 -addToUFM (UFM m) k v = UFM (M.insert (getKey $ getUnique k) v m) +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) addToUFM_Directly (UFM m) u v = UFM (M.insert (getKey u) v m) |