summaryrefslogtreecommitdiffstats
path: root/tree.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2021-06-30 06:36:44 -0700
committerKaz Kylheku <kaz@kylheku.com>2021-06-30 06:36:44 -0700
commit09e70c914ca83b5c7405aa633864db49f27efa05 (patch)
tree02fc78c949dbfa6364a4da4115ee6c79fa643e39 /tree.h
parent0de65a6edc3631ce50ad5f5082ff82a45be867d0 (diff)
downloadtxr-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