This incorporates various updates to the diagrams.
* The largest change is the incorporation of the new process where
eval_ast is integrated into eval and the macroexpand function and has
been incorporated directly into the eval TCO loop and no longer
requires a separate function or special form. For the most part, this
change was discussed in https://github.com/kanaka/mal/issues/587 and
implemented in https://github.com/kanaka/mal/pull/592. Instead of
a special form, there is now a "apply macro" box in the eval block.
The "apply macro" box has a TCO line (but not env creation line unlike
the "apply" box.
* Change the "eval_ast" sub-block to "evaluate" and convert the list of
evaluated items to individual blocks. Add a "list" block and connect
this to the "apply" block (rather than connecting eval_ast to eval).
* Change the "symbol lookup" arrow to point to the "symbol" box in the
"evaluate" block instead of pointing to the "evaluate" block.
* Update the "create env" arrows to point to the child env box instead
of the root/REPL env box.
* Add try/catch TCO line.
* Remove the `or` macro and `gensym` function from stepA since this has
been dropped for a while.
The bullet point for `with-meta` describes how to implement it for Mal functions, but it's applicable to all Mal types, while the last sentence can be reordered to emphasize the details specific to metadata on functions.
This isn't a perfect solution because if somebody pushes a new
implementation and then later pushes the updates to these files, it
probably won't trigger any implementations. However, the workflow can
always be manually triggered for a specific implementation and branch so
that's probably okay. At least this way, the addition of a new
implementation won't always trigger every other implementation to be
tested.