R> drop ['] expand goto-deferred
;
+: expand-definition ( exp -- result )
+ define-symbol 2swap
+
+ 2dup definition-var
+ 2swap definition-val expand
+ nil ( define var val' nil )
+
+ cons cons cons ;
+
+: expand-assignment ( exp -- result )
+ set!-symbol 2swap
+
+ 2dup assignment-var
+ 2swap assignment-val expand
+ nil ( define var val' nil )
+
+ cons cons cons ;
+
:noname ( exp -- result )
expand-macro
+ quote? if exit then
+
quasiquote? if expand-quasiquote exit then
definition? if expand-definition exit then