Safe Haskell | None |
---|
- app :: MonadStats m => (E, [E]) -> m E
- programMapRecGroups :: Monad m => IdMap (Maybe E) -> (Id -> Info -> m Info) -> (E -> Info -> m Info) -> (E -> Info -> m Info) -> ((Bool, [Comb]) -> m [Comb]) -> Program -> m Program
- forceInline :: HasProperties a => a -> Bool
- programDecomposedDs :: Program -> [Either (TVr, E) [(TVr, E)]]
- programDecomposedCombs :: Program -> [(Bool, [Comb])]
- programMapProgGroups :: Monad m => IdMap (Maybe E) -> (Program -> m Program) -> Program -> m Program
- forceNoinline :: HasProperties a => a -> Bool
- baseInlinability :: (Num a, HasProperties a1) => a1 -> E -> a
Documentation
:: Monad m | |
=> IdMap (Maybe E) | initial map to apply |
-> (Id -> Info -> m Info) | annotate based on Id map |
-> (E -> Info -> m Info) | annotate letbound bindings |
-> (E -> Info -> m Info) | annotate lambdabound bindings |
-> ((Bool, [Comb]) -> m [Comb]) | bool is true if group is recursive. |
-> Program | |
-> m Program |
Map recursive groups, allowing an initial map to be passed in and it will also propagate changes in the tvrInfo properly, and make sure nothing shadows one of the global names.
forceInline :: HasProperties a => a -> BoolSource
programDecomposedCombs :: Program -> [(Bool, [Comb])]Source
forceNoinline :: HasProperties a => a -> BoolSource
baseInlinability :: (Num a, HasProperties a1) => a1 -> E -> aSource
higher numbers mean we want to inline it more