X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?p=scheme.forth.jl.git;a=blobdiff_plain;f=src%2Fscheme.4th;h=0722208250945ab9165d8d6b1c410711ee65cdc8;hp=67b656c89e74aa0e94cd6e30fadb6fa462e6a27b;hb=f1bd626bdb02170b189891d8f8f3f3cc6b592209;hpb=23fde15081cff22df3a870a7a8a5692b7761e0aa diff --git a/src/scheme.4th b/src/scheme.4th index 67b656c..0722208 100644 --- a/src/scheme.4th +++ b/src/scheme.4th @@ -1757,12 +1757,9 @@ hide env defer expand : expand-quasiquote ; -: expand-definition ; -: expand-assignment ; : expand-define-macro ; : expand-if ; : expand-lambda ; -: expand-begin ; : expand-application ; : expand-macro ( exp -- result ) @@ -1801,6 +1798,27 @@ defer expand cons cons cons ; +: expand-sequence ( exp -- res ) + nil? if exit then + + 2dup car expand + 2swap cdr recurse + + cons ; + +: expand-begin ( exp -- res ) + begin-symbol 2swap + begin-actions expand-sequence + + cons ; + +: expand-lambda ( exp -- res ) + lambda-symbol 2swap + 2dup lambda-parameters + 2swap lambda-body expand-sequence + + cons cons ; + :noname ( exp -- result ) expand-macro