Working on the self-hosted implementation, but hitting a really cool issue with macros. The problem is that some evaluations are not actually commutative, but the evaluator assumes they are. As a result, it is impossible to express certain dependencies or block evaluation in some cases. Not quite sure how to fix this.