DIS | dis | -> | var arg_1 ... arg_n | Macro application
|  | | | `(`dis_1`,` ... `,`dis_n`)` | Tuple, n >= 0
|  | | | Cons arg_1 ... arg_n | Constructor, n >= 0
|  | | | Cons `{` field_1 `=` arg_1 `,` ... `,` field_n `=` arg_n `}` | Named fields, n >= 1
|  | | | `<`var`/`var`>` arg_1 ... arg_n | User-defined functions, n >= 1
|  | | | `%%`Var cv | Base DIS
|  | | | `declare` cexp cv `in` dis | Type-cast DIS
Argument | arg | -> | dis |
|  | | | cv |
Variable / C Expression | cv | -> | cexp |
|  | | | var | Variable bound in `%dis`