+ 2over 2over ( env exp env exp )
+ operator 2dup ( env exp env opname opname )
+
+ lookup-macro nil? if
+ \ Regular function application
+
+ 2drop ( env exp env opname )
+
+ 2swap eval ( env exp proc )
+ -2rot ( proc env exp )
+ operands 2swap ( proc operands env )
+ list-of-vals ( proc argvals )
+
+ apply
+ else
+ \ Macro function evaluation
+
+ ." Macro eval"
+
+ ( env exp env opname mproc )
+ 2swap 2drop -2rot 2drop cdr ( env mproc body )
+
+ \ TODO: evaluate macro procedure on expression body
+ ." ABORTED: Macros not yet fully implemented!" abort
+ then