+: expand-quasiquote ;
+: expand-definition ;
+: expand-assignment ;
+: expand-define-macro ;
+: expand-if ;
+: expand-lambda ;
+: expand-begin ;
+: expand-application ;
+
+:noname ( exp -- result )
+
+ quasiquote? if expand-quasiquote exit then
+
+ definition? if expand-definition exit then
+
+ assignment? if expand-assignment exit then
+
+ macro-definition? if expand-define-macro exit then
+
+ if? if expand-if exit then
+
+ lambda? if expand-lambda exit then
+
+ begin? if expand-sequence exit then
+
+ application? if expand-apply exit then
+
+; is expand