`define`d constructors should reside in the AST module, rather than just in the parser. - Modify the `TypeChecker` to store the inferred types of the definition arguments. - Place the definitions in the AST module (together with their type signatures). - Java: cannot place into package `Absyn`, place in class `AbsynDef` Backends: - [X] Agda - [X] Haskell - [x] C - [x] C++ - [x] Java - [x] Ocaml