I have basic macros working fine. I would like to implement block macros / syntactic transforms, but not just yet! I will continue simplifying the coroutine syntax as much as possible using this macro system. TODO automatically wrap expression macros in parentheses? NOTE my macros are unhygenic w.r.t. argument names, e.g: define r(foo) (f->foo-r) main() r(foo) recurses infinitely because we are substituting foo->foo perhaps we shouldn't expand macros after substituting the arguments, but only before. yes.