On a (possibly) related note:

The #js data literal doesn't seem to work correctly
inside the go macro as well: Compiling

    (go (prn (<! (go (let [bar "bar"] #js {:foo bar})))))

produces

    "WARNING: Use of undeclared Var <ns>/bar ..."

and prints out

    "#js {:foo nil}"

if <ns>/bar is nil.

Of course,

    (go (prn (<! (go (let [bar "bar"] (js-obj "foo" bar))))))

works as expected.


Am Freitag, 21. Februar 2014 19:07:07 UTC+1 schrieb Jay Lee:
> I'm building utility macro to convert sequence of functions into javascript 
> object in compile time.
> 
> What I wanted thing is like as following:
> 
> (def-fmap my-funcs
>   (test1 [a] (println "t1"))
>   (test2 [a] (println "t2")))
> 
> --> PLAIN JAVASCRIPT OBJECT
> var my-funcs = {"test1" function (a) { console.log("t1"); }
>                 "test2" function (b) { console.log("t2"); }}
> 
> I tried macro which includes #js data literal but 
> it didn't work for me.
> 
> (defmacro def-fmap
>  [n & body]
>  (let [fmap (body->func-maps body)]
>    `(def n 
>          #js ~fmap)
>  ))
> 
> java.lang.RuntimeException: JavaScript literal must use map or vector notation
> 
> So I tried to quote #js literal notation but it was same.
> 
> (defmacro def-fmap
>  [n & body]
>  (let [fmap (body->func-maps body)]
>    `(def n 
>          ~'#js ~fmap)
>  ))
> 
> I want to optimize performance for my clojuresciprt
> by utilizing macro expansion.
> 
> Any tips?
> 
> Thanks.

-- 
Note that posts from new members are moderated - please be patient with your 
first post.
--- 
You received this message because you are subscribed to the Google Groups 
"ClojureScript" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to