Copyright  (C) 20122016, University of Twente 

License  BSD2 (see the file LICENSE) 
Maintainer  Christiaan Baaij <christiaan.baaij@gmail.com> 
Safe Haskell  None 
Language  Haskell2010 
Types used in Normalize modules
 data NormalizeState = NormalizeState {
 _normalized :: HashMap TmName (Type, SrcSpan, 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
 _primitives :: PrimMap BlackBoxTemplate
 _recursiveComponents :: HashMap TmName Bool
 specialisationLimit :: Lens' NormalizeState Int
 specialisationHistory :: Lens' NormalizeState (HashMap TmName Int)
 specialisationCache :: Lens' NormalizeState (Map (TmName, Int, Either Term Type) (TmName, Type))
 recursiveComponents :: Lens' NormalizeState (HashMap TmName Bool)
 primitives :: Lens' NormalizeState (PrimMap BlackBoxTemplate)
 normalized :: Lens' NormalizeState (HashMap TmName (Type, SrcSpan, 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, SrcSpan, 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