Safe Haskell | Safe-Infered |
---|
- externals :: [External]
- substR :: Id -> CoreExpr -> RewriteH Core
- substExprR :: Id -> CoreExpr -> RewriteH CoreExpr
- substTopBindR :: Id -> CoreExpr -> RewriteH CoreProgram
- letSubstR :: RewriteH CoreExpr
- letSubstNR :: Int -> RewriteH Core
- safeLetSubstR :: RewriteH CoreExpr
- safeLetSubstPlusR :: RewriteH CoreExpr
- freeIdsQuery :: TranslateH CoreExpr String
- showVar :: Var -> String
- showVars :: [Var] -> String
- freeIdsT :: TranslateH CoreExpr [Id]
- freeVarsT :: TranslateH CoreExpr [Var]
- coreExprFreeVars :: CoreExpr -> [Var]
- coreExprFreeIds :: CoreExpr -> [Id]
- deShadowBindsR :: RewriteH CoreProgram
- rulesToEnv :: [CoreRule] -> Map String (RewriteH CoreExpr)
- rulesToRewriteH :: [CoreRule] -> RewriteH CoreExpr
- inScope :: Context -> Id -> Bool
- rules :: String -> RewriteH CoreExpr
- getHermitRules :: Generic a ~ Core => TranslateH a [(String, [CoreRule])]
- rules_help :: TranslateH Core String
- makeRule :: String -> Id -> CoreExpr -> CoreRule
- addCoreBindAsRule :: String -> Name -> RewriteH ModGuts
- flattenModule :: RewriteH ModGuts
- mergeBinds :: RewriteH CoreProgram
- occurAnalyseExpr :: CoreExpr -> CoreExpr
- occurAnalyseExprR :: RewriteH CoreExpr
- exprEqual :: CoreExpr -> CoreExpr -> Bool
- bindEqual :: CoreBind -> CoreBind -> Maybe Bool
- coreEqual :: Core -> Core -> Maybe Bool
- compareValues :: Name -> Name -> TranslateH Core ()
- arityOf :: Context -> Id -> Int
- castElimination :: RewriteH CoreExpr
Documentation
substTopBindR :: Id -> CoreExpr -> RewriteH CoreProgramSource
letSubstNR :: Int -> RewriteH CoreSource
safeLetSubstPlusR :: RewriteH CoreExprSource
safeLetSubstPlusR
tries to inline a stack of bindings, stopping when reaches
the end of the stack of lets.
freeIdsQuery :: TranslateH CoreExpr StringSource
Output a list of all free variables in an expression.
coreExprFreeVars :: CoreExpr -> [Var]Source
coreExprFreeIds :: CoreExpr -> [Id]Source
deShadowBindsR :: RewriteH CoreProgramSource
- from GHC documentation
- De-shadowing the program is sometimes a useful pre-pass. It can be done simply by running over the bindings with an empty substitution, becuase substitution returns a result that has no-shadowing guaranteed.
(Actually, within a single type there might still be shadowing, because
substTy
is a no-op for the empty substitution, but that's probably OK.)
getHermitRules :: Generic a ~ Core => TranslateH a [(String, [CoreRule])]Source
compareValues :: Name -> Name -> TranslateH Core ()Source