packages feed

uhc-light-1.1.7.0: src/UHC/Light/Compiler/VarMp/Utils.hs

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