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
 _inlineBelow :: !Int
 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))
 inlineBelow :: Lens' NormalizeState Int
 type NormalizeMonad = State NormalizeState
 type NormalizeSession = RewriteMonad NormalizeState
 type NormRewrite = Rewrite NormalizeState
Documentation
data NormalizeState Source
State of the NormalizeMonad
NormalizeState  

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