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