Pre-SIP: Export Macros

Current macros can in fact introduce new definitions, and those definitions can affect your program. The thing is that current macros only produce expressions at the end of the day, meaning that any definitions you create are not visible outside of the Expr that contains them.

You can in fact do that with current macros, you just cannot have them visible outside of the Expr. However, since we would be using Expr.show to produce writeable files instead of splicing Expr into your code, that ends up not being a problem anymore.

The problems at present is

  1. The requisite api is still experimental: SymbolModule

  2. The requisite api also doesn’t allow non-empty constructors

  3. The macro system only checks the sanity of Exprs borne from Terms when used normally.