Safe Haskell  None 

Language  Haskell2010 
Types used in Normalize modules
 data NormalizeState = NormalizeState {
 _normalized :: HashMap TmName (Type, Term)
 _specialisationCache :: Map (TmName, Int, Either Term Type) (TmName, Type)
 _specialisationHistory :: HashMap TmName Int
 _specialisationLimit :: Int
 _inlineHistory :: HashMap TmName (HashMap TmName Int)
 _inlineLimit :: Int
 _curFun :: TmName
 specialisationLimit :: Lens' NormalizeState Int
 specialisationHistory :: Lens' NormalizeState (HashMap TmName Int)
 specialisationCache :: Lens' NormalizeState (Map (TmName, Int, Either Term Type) (TmName, Type))
 normalized :: Lens' NormalizeState (HashMap TmName (Type, Term))
 inlineLimit :: Lens' NormalizeState Int
 inlineHistory :: Lens' NormalizeState (HashMap TmName (HashMap TmName Int))
 curFun :: Lens' NormalizeState TmName
 type NormalizeMonad = State NormalizeState
 type NormalizeSession = RewriteSession NormalizeMonad
 type NormRewrite = Rewrite NormalizeMonad
Documentation
data NormalizeState Source
State of the NormalizeMonad
NormalizeState  

normalized :: Lens' NormalizeState (HashMap TmName (Type, Term))
type NormalizeMonad = State NormalizeState Source
State monad that stores specialisation and inlining information
type NormalizeSession = RewriteSession NormalizeMonad Source
RewriteSession with extra Normalisation information
type NormRewrite = Rewrite NormalizeMonad Source
A Transform
action in the context of the RewriteMonad
and NormalizeMonad