Unify 'lambda funcall' and 'symbol funcall' via function special form
authorDavid Vazquez <davazp@gmail.com>
Wed, 16 Jan 2013 02:01:10 +0000 (02:01 +0000)
committerDavid Vazquez <davazp@gmail.com>
Wed, 16 Jan 2013 02:01:10 +0000 (02:01 +0000)
ecmalisp.lisp

index cd831bf..57f793b 100644 (file)
         form)))
 
 (defun compile-funcall (function args env)
-  (cond
-    ((symbolp function)
-     (concat (ls-compile `(quote ,function)) ".function("
-             (join (mapcar (lambda (x) (ls-compile x env)) args)
-                   ", ")
-             ")"))
-    ((and (listp function) (eq (car function) 'lambda))
-     (concat "(" (ls-compile function env) ")("
-             (join (mapcar (lambda (x) (ls-compile x env)) args)
-                   ", ")
-             ")"))
-    (t
-     (error (concat "Invalid function designator " (symbol-name function))))))
+  (concat (ls-compile `#',function) "("
+          (join (mapcar (lambda (x) (ls-compile x env)) args)
+                ", ")
+          ")"))
 
 (defun ls-compile (sexp &optional (env (make-lexenv)))
   (cond