ddc-core-0.4.2.1: DDC/Core/Transform/Rename.hs
module DDC.Core.Transform.Rename
( Rename(..)
-- * Substitution states
, Sub(..)
-- * Binding stacks
, BindStack(..)
, pushBind
, pushBinds
, substBound
-- * Rewriting binding occurences
, bind1, bind1s, bind0, bind0s
-- * Rewriting bound occurences
, use1, use0)
where
import DDC.Core.Exp.Annot.Exp
import DDC.Type.Transform.Rename
instance Rename (Witness a) where
renameWith sub ww
= let down x = renameWith x
in case ww of
WVar a u -> WVar a (use0 sub u)
WCon a c -> WCon a c
WApp a w1 w2 -> WApp a (down sub w1) (down sub w2)
WType a t -> WType a (down sub t)