Class Compiler

java.lang.Object
convex.core.lang.Compiler

public class Compiler extends Object
Compiler class responsible for transforming forms (code as data) into an Op tree for execution. Phases in complete evaluation:
  1. Expansion (form -> AST)
  2. Compile (AST -> op)
  3. Execute (op -> result)
Expanded form follows certain rules: - No remaining macros / expanders in leading list positions TODO: consider including typechecking in expansion phase as per: http://www.ccs.neu.edu/home/stchang/pubs/ckg-popl2017.pdf "A language that doesn't affect the way you think about programming is not worth knowing." ― Alan Perlis