226 karma · joined December 9, 2014
If those functions need to call into other ClojureScript namespaces that you've already compiled into your code then the analysis cache would need to be populated so that eval can operate properly.
For reference, here is cljs.js/eval: https://github.com/clojure/clojurescript/blob/v1.7/src/main/...
Then there is the `clojure.java.shell` namespace that could prove very useful for scripting.
But, the opposite is in flight: ClojureScript now has support for depending on libraries that are packaged using the CommonJS system.
So, I see no problem with learning either. Especially when you first jump in you are concerned more with the language "proper".
There are no plans for the same backend AFAIK.
If you are curious, here is the Wiki page that tracks the path to release: https://github.com/clojure/clojurescript/wiki/Road-Map
It is based on a relatively recent ability for ClojureScript to “bootstrap” or “self-host,” and thus is the first time it is possible to evaluate ClojureScript forms directly on a device without resorting to a back-end compiler service. (No network access is needed.)
This is just the first release with a minimal feature set. We would greatly appreciate any feedback for future improvements!
I think Fogus's post is still relevant: http://blog.fogus.me/2012/04/25/the-clojurescript-compilatio...
The aspect that is rough is the ClojureScript tooling. This post attempts to cover where we are with tooling: http://blog.fikesfarm.com/posts/2015-07-06-clojurescript-wit...
The general state of things is covered here: http://blog.fikesfarm.com/posts/2015-07-06-clojurescript-wit...
But then there is also the concept that a ClojureScript app which is going to make use of a REPL needs to do some additional work to bootstrap the ClojureScript runtime. Normally when you ship a ClojureScript app you would employ Google Closure to concatenate everything into a single file which is loaded and evaluated. But if you want to work with individual files (one per Clojure namespace, which is important when you are working with a REPL), you need to avoid that and you need to set up things to use Google Closure's dependency management system (CLOSURE_IMPORT_SCRIPT, etc.). I have a blog post which attempts to explain the different meaning of "bootstrap" in this context: http://blog.fikesfarm.com/posts/2015-03-05-ambly-app-bootstr...
Also, it is a slightly older version, but if you want, you can try it directly online here: https://appetize.io/app/8hf37bv29k2zrj0v2j765xt3jr
In short, to make an Android version would involve just running a JavaScript engine and hooking up a little bit of UI to send strings to it, and get strings back out of it.
Replete is open source... feel free to steal heavily from it.
Look at how simple and rough the first working version of Replete was (see demo of it at bottom of http://blog.fikesfarm.com/posts/2015-06-27-replete-a-standal...)
IMHO an Android version is just waiting to be created by someone. :)
Google Closure is used for its dependency management (ClojureScript namespaces and how they require other namespaces). But Google Closure is not used for its optimizations (everything is built with :none mode).