diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-06-30 06:36:44 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-06-30 06:36:44 -0700 |
commit | 09e70c914ca83b5c7405aa633864db49f27efa05 (patch) | |
tree | 02fc78c949dbfa6364a4da4115ee6c79fa643e39 /tree.h | |
parent | 0de65a6edc3631ce50ad5f5082ff82a45be867d0 (diff) | |
download | txr-09e70c914ca83b5c7405aa633864db49f27efa05.tar.gz txr-09e70c914ca83b5c7405aa633864db49f27efa05.tar.bz2 txr-09e70c914ca83b5c7405aa633864db49f27efa05.zip |
op: refactor do handling.
* stdlib/op.tl (op-expand): The logic involving the multiple
expansions of do is consolidated into one step, so that
everything is taken care of by the time syntax-1 is produced.
Immediately when the initial unsuffixed arguments expand
successfully, we check or the presence of metas and add the @1
if metas are absent. In the case of expanding with the gensym,
we immediately replace that with @1 without using symacrolet.
The do-gen variable is gone. Later, when calculating
lambda-interior, there are no hacky additional passes to deal
with; that block of code just refers to syntax-2. The do case
is folded together with the have-metas case. Also adding
copious comments to this hard-to-follow logic.
Diffstat (limited to 'tree.h')
0 files changed, 0 insertions, 0 deletions