module UHC.Light.Compiler.VarMp.Utils ( varmpGraphVisit ) where import UHC.Light.Compiler.Base.Common import UHC.Light.Compiler.VarMp import UHC.Light.Compiler.Substitutable import qualified Data.Set as Set import qualified Data.Map as Map {-# LINE 34 "src/ehc/VarMp/Utils.chs" #-} -- | Filter the base level by traversing as a graph varmpGraphVisit :: VarIdS -> VarMp -> VarMp varmpGraphVisit start (VarMp l (m:ms)) = VarMp l (m':ms) where m' = graphVisit (\newm m tvar -> case Map.lookup tvar m of Just i -> (Map.insert tvar i newm, varFreeSet i) _ -> (newm,Set.empty) ) Set.union Map.empty start m