What is a compiler?

Start (small brain)

Lexing -> Parsing ->

Bigger brain

Why spend time on parsing?

What matters is:

  • Definition of AST as an ADT
  • All compiler functionality (interpret, compile, pretty-printing) are recursive functions with a big switch-case over the ADT

Conal Elliott

Commutative diagram

  • Program
  • Hardware
  • Denotation (essence)
\[\begin{tikzcd} A \arrow{r}{\varphi} \arrow[swap]{d}{\varrho_f} & B \arrow{d}{\varrho_g} \\% A_f \arrow{r}{\varphi_f}& B_g \end{tikzcd}\]

Back to the real world

What kind of compiler job should I look for?