49 ms·
ClojureScript Compiler Compiled with ClojureScript
- S4M 14y agoI never ran ClojureScript, but I am curious about the procedure to call functions from other java script libraries. Is it as seamless as the call of a java function from the JVM Clojure?
- piranha 14y agoYes, it is. You can just do (js/$ ".something") and you'll get jQuery object back.
- pepijndevos 14y agoI think he meant the reverse. I know it is fairly doable in Clojure on the JVM, I assume ClojureScript is fairly similar. You have to use Var objects iirc.
- dribnet 14y agoAnd if you are lucky enough to be dealing with a functional javascript library like d3, you can even use cljs functions as arguments to your js library. This leads to very succinct and powerful interop. For example: (.timer js/d3 (fn [] (-> root (.selectAll "g") (.data curClockData) (.select "path") (.attr "class" #(str (:key %) (:which %)))) ; return false to keep running false)))) This snippet does this twice to provide a longish function to the d3.timer call and a small inline one to attr to set a class based on the data in the selection. More context available: http://bl.ocks.org/4326896 http://bl.ocks.org/4326896 ObTopic: cljs in cljs does sound dreamy. Would this also enable <script type="text/clojurescript">?
- swannodette 14y agoNice D3 example! I predict we will see an "official" CLJS-in-CLJS around the time of the next Clojure/conj ;)
- kanaka 14y agoAnd hopefully "unofficial" CLJS-in-CLJS by Clojure West. :-) I just pushed type/record/protocol/reify support. Next big thing is to fix runtime namespace creation. Then file I/O. Then all the bugs discovered while try to compile the compiler using the compiled compiler (i.e. self-hosting).
- dustingetz 14y agowhen calling JS code from CLJS, you have to translate arguments that aren't primitives from CLJS datastructures to JS datastructures. (Functional languages implement their datastructures differently than imperative languages.) here's an example: https://github.com/dustingetz/getz-bootstrap/blob/datomic/src-cljs/gb/app.cljs https://github.com/dustingetz/getz-bootstrap/blob/datomic/sr...
- eggsby 14y agoWhile it's true that you need to turn things like a NodeList from js into a clj seq you don't need to write these utilities yourself; clj->js and js->clj can both be found in cljs core: https://github.com/clojure/clojurescript/blob/master/src/cljs/cljs/core.cljs#L6927 https://github.com/clojure/clojurescript/blob/master/src/clj...