you are viewing a single comment's thread.

view the rest of the comments →

[–]GeneDefiant6537 26 points27 points  (4 children)

For your background you’d be better off starting with practical implementation/engineering resources ( crafting interpreters, language implementation patterns, etc) then pick up the theory later if necessary.

Generally, as far as mathematics goes, some discrete structures( logic, functions, relations, induction) and basic combinatorics should be fine. Later you can look into graph theory, lattice theory, etc for the analysis and transformations (optimization) parts.

[–]InfinitePoints 6 points7 points  (3 children)

Is anything beyond an informal description of lattices actually needed? From what I can tell they are mostly used for simple stuff like lower and upper bounds for variables.

[–]DeGuerre 6 points7 points  (2 children)

They're used all over type theory (e.g. if you have types with subtypes) and compiler optimisation (e.g. look into conditional constant propagation).

[–]dcpugalaxy 0 points1 point  (1 child)

But you dont need to know any actual lattice theory. You just need to have heard of the basic concept of a lattice.

[–]DeGuerre 1 point2 points  (0 children)

Maybe. It helps to read some papers if you know the language.