Last active
February 25, 2020 15:05
-
-
Save pzp1997/761fa768c9e6848b4e0a3a3c7bbd98b0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
data Can.Def | |
= Def (A.Located Name) [Pattern] Can.Expr | |
| TypedDef (A.Located Name) FreeVars [(Pattern, Type)] Can.Expr Type | |
data Can.Decls | |
= Declare Can.Def Can.Decls | |
| DeclareRec Can.Def [Can.Def] Can.Decls | |
| SaveTheEnvironment | |
data ModuleName.Canonical = | |
Canonical | |
{ _package :: !Pkg.Name | |
, _module :: !Name.Name | |
} | |
data Opt.Global = Global ModuleName.Canonical Name | |
data Opt.LocalGraph = | |
LocalGraph | |
{ _l_main :: Maybe Main | |
, _l_nodes :: Map.Map Opt.Global Opt.Node -- PERF profile switching Global to Name | |
, _l_fields :: Map.Map Name Int | |
} | |
data Opt.Def | |
= Def Name Opt.Expr | |
| TailDef Name [Name] Opt.Expr | |
data Opt.Node | |
= Define Opt.Expr (Set.Set Opt.Global) | |
| DefineTailFunc [Name] Opt.Expr (Set.Set Opt.Global) | |
| Cycle [Name] [(Name, Opt.Expr)] [Opt.Def] (Set.Set Opt.Global) | |
| ... | |
Optimize.Module.addDef :: ModuleName.Canonical -> Annotations -> Can.Def -> Opt.LocalGraph -> Result i [W.Warning] Opt.LocalGraph | |
Optimize.Module.addDefHelp :: A.Region -> Annotations -> ModuleName.Canonical -> Name.Name -> [Can.Pattern] -> Can.Expr -> Opt.LocalGraph -> Result i w Opt.LocalGraph | |
Optimize.Module.addDefNode :: ModuleName.Canonical -> Name.Name -> [Can.Pattern] -> Can.Expr -> Set.Set Opt.Global -> Opt.LocalGraph -> Opt.LocalGraph | |
-- Shower thought: maybe do everything on the global graph | |
-- Be careful about inlining things called in the view |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment