- Document the semantics of the DSL! - Clean up and factor the codegen properly. - Get rid of the expression syntax `<EXPR` in patterns; do a type-dependent parse instead where we know the polarity of pattern-term args and parse in-args as exprs. - Look into whether optimizations are possible: - More in-depth fallibility analysis (avoid failure edges where possible) - Slightly nicer human-readable generated code - Include full rule body (S-expression) in comment, not just line number - Inline some expressions (no more `let val23 = 1234; ... f(val23);`) - Build inlining and simplification: inline invocations of internal constructors, and eliminate ctor-etor or makevariant-matchvariant pairs. - Ideas from discussion with fitzgen - Turn arg-polarity and exprs on extractors into purer "InstFormat" - Emit two contexts: an immutable context for inputs and a mutable context for outputs