     dup lisp-symbol? [ name>> lisp-env get key? ] [ drop f ] if ;
 
 : funcall ( quot sym -- * )
-    [ 1array [ call ] with-datastack >quotation ] dip
-    dup lisp-symbol? [ lookup-var ] when curry call ; inline
+    [ 1array [ call ] with-datastack >quotation ] dip curry call ; inline
 
 : define-primitive ( name vocab word -- )
     swap lookup 1quotation '[ , compose call ] swap lisp-define ;


: lisp-define ( quot name -- )
    lisp-env get set-at ;

: defun ( name quot -- name )
    over name>> lisp-define ;

: lisp-get ( name -- word )
    lisp-env get at ;

: rest-lambda ( body vars -- quot )
    "&rest" swap [ remove ] [ index ] 2bi
    [ localize-lambda <lambda> lambda-rewrite call ] dip
    swap '[ , cut '[ @ , seq>list ] call , call call ] 1quotation ;

: normal-lambda ( body vars -- quot )
    localize-lambda <lambda> lambda-rewrite '[ @ compose call call ] 1quotation ;
