      [ 1quotation ]
     } cond ;
     
-: compile-form ( lisp-ast -- quot )
-    convert-form lambda-rewrite call ; inline
-    
 : macro-expand ( cons -- quot )
-    uncons [ list>seq [ ] like ] [ lookup-macro lambda-rewrite call ] bi* call compile-form call ;
+    uncons [ list>seq >quotation ] [ lookup-macro ] bi* call convert-form call ;
     
 : lisp-string>factor ( str -- quot )
     lisp-expr compile-form ;

: lisp-var? ( lisp-symbol -- ? )
    dup lisp-symbol? [ name>> lisp-env get key? ] [ drop f ] if ;
    
: funcall-arg-list ( args -- newargs )    
    [ ] [ dup \ funcall = [ drop 2 cut* [ funcall ] compose call ] when suffix ] reduce ;
    
: funcall ( quot sym -- * )
    [ funcall-arg-list ] dip
    dup lisp-symbol? [ lookup-var ] when curry call ; inline
    
: define-primitive ( name vocab word -- )  

DEFER: lisp-var?
DEFER: macro-expand
DEFER: define-lisp-macro
    
! Functions to convert s-exps to quotations
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
