FUNCALL accepts symbols as function descriptor
authorDavid Vazquez <davazp@gmail.com>
Wed, 13 Feb 2013 22:46:19 +0000 (22:46 +0000)
committerDavid Vazquez <davazp@gmail.com>
Wed, 13 Feb 2013 22:46:19 +0000 (22:46 +0000)
ecmalisp.lisp

index 5cbd13e..514e259 100644 (file)
     "string1.concat(string2)"))
 
 (define-raw-builtin funcall (func &rest args)
-  (code "(" (ls-compile func) ")("
-        (join (cons (if *multiple-value-p* "values" "pv")
-                    (mapcar #'ls-compile args))
-              ", ")
-        ")"))
+  (js!selfcall
+    "var f = " (ls-compile func) ";" *newline*
+    "return (typeof f === 'function'? f: f.fvalue)("
+    (join (cons (if *multiple-value-p* "values" "pv")
+                (mapcar #'ls-compile args))
+          ", ")
+    ")"))
 
 (define-raw-builtin apply (func &rest args)
   (if (null args)