import Data.List hiding (union)
import Data.Maybe
-
-- | Lookup a node from the graph.
lookupNode
:: Uniquable k
| otherwise
= graphMapModify
- $ (\fm -> foldr (\u -> addConflictSet1 u getClass conflicts) fm
+ $ (\fm -> foldl' (\g u -> addConflictSet1 u getClass conflicts g) fm
$ uniqSetToList conflicts)
addConflictSet1 u getClass set
- = let set' = delOneFromUniqSet set u
- in adjustWithDefaultUFM
+ = case delOneFromUniqSet set u of
+ set' -> adjustWithDefaultUFM
(\node -> node { nodeConflicts = unionUniqSets set' (nodeConflicts node) } )
(newNode u (getClass u)) { nodeConflicts = set' }
u
u
+{-# INLINE adjustWithDefaultUFM #-}
adjustWithDefaultUFM
:: Uniquable k
=> (a -> a) -> a -> k
map
k def
-
+{-# INLINE adjustUFM #-}
adjustUFM
:: Uniquable k
=> (a -> a)
= case lookupUFM map k of
Nothing -> map
Just a -> addToUFM map k (f a)
-