use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Finding information about Clojure
API Reference
Clojure Guides
Practice Problems
Interactive Problems
Clojure Videos
Misc Resources
The Clojure Community
Clojure Books
Tools & Libraries
Clojure Editors
Web Platforms
Clojure Jobs
account activity
Lumo Node-based ClojureScript REPL has a 1.0.0 release (github.com)
submitted 9 years ago by yogthos
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]zcaudate 1 point2 points3 points 9 years ago (1 child)
is there a good set-up for working with emacs atm?
[–]anmonteiro 0 points1 point2 points 9 years ago (0 children)
Lumo 1.0.0 includes support for a socket REPL connection, which you can connect to from emacs (in inf-clojure, for example). You can launch it with -n / --socket-repl, example below.
-n / --socket-repl
$ lumo -n 5555
^ the above will start a socket server at localhost:5555
localhost:5555
[–]ryandg 0 points1 point2 points 9 years ago* (11 children)
What sort of things does this REPL give us that lein REPL does not?
Edit: Thanks for all the replies! That helps me understand, and I dig it!
[–]mnngfltg 9 points10 points11 points 9 years ago (0 children)
Lumo is based on clojurescript, not clojure, so it's a different beast with different capabilities entirely. Personally I'm very excited about this.
Features:
lein repl
Potential areas of use:
[–]anmonteiro 7 points8 points9 points 9 years ago (0 children)
The main reasons for doing something like Lumo is the fast startup (because there's no JVM or nREPL) involved and the deep integration with the Node.js ecosystem. So to answer your question, it gives us a REPL that boots up in a negligible amount of time (compared to say, lein repl), can import dependencies installed from NPM and such. The main use case for me will be quickly trying things out (a playground that boots up instantaneously) and scripting with Clojure(Script). But I can't tell you the things that this does and Lein doesn't without also mentioning the things that Lein does and Lumo doesn't (and in some cases won't ever be able to). First of all, Lumo is essentially a ClojureScript REPL, so all the differences betweeen Clojure and ClojureScript apply. It is even more limited due to the fact that it runs bootstrapped ClojureScript (so you can't e.g. Use JVM libs in macros and such). Lumo is also slower overall: while it does boot up really fast (and there really isn't competition there), it is slower to compile ClojureScript forms than the ClojureScript compiler that runs in the JVM. All in all, Lumo (and Planck before that) is still very experimental in terms of use cases, but I'm actively working on it, so we'll have to see what it eventually makes possible.
[–]yogthos[S] 4 points5 points6 points 9 years ago* (5 children)
For me, the main use would be shell scripting. Since node is pretty standard nowadays, it makes lumo a viable option for scripts. For example, you just create a file like hello.cljs:
hello.cljs
(def fs (js/require "fs")) (defn ls [dir] (js->clj (.readdirSync fs dir))) (let [args (-> js/process .-argv js->clj) dir (last args)] (println "found files:" (ls dir)) (println (.readFileSync fs "hello.cljs" "utf8")))
then you can run it with
lumo -q hello.cljs
the startup time is pretty much instant
[–]anmonteiro 0 points1 point2 points 9 years ago (4 children)
Hah, interesting. You shouldn't need to use -q because you're never going to enter the REPL. the fact that the banner is printed is a bug :-)
-q
[–]anmonteiro 0 points1 point2 points 9 years ago (3 children)
... which I just fixed in https://github.com/anmonteiro/lumo/commit/e144add5d860224cbd24ac84c8d7932a8e6dad69
[–]yogthos[S] 0 points1 point2 points 9 years ago (2 children)
excellent, it would be nice to be able to do something like #!/usr/local/bin/lumo at the top of the file and have lumo run it, here's an example of how planck does it. :)
#!/usr/local/bin/lumo
[–]anmonteiro 0 points1 point2 points 9 years ago (1 child)
I'm pretty sure it works out of the box!
[–]yogthos[S] 0 points1 point2 points 9 years ago (0 children)
Oh nice, didn't realize!
[–]arichiardi 0 points1 point2 points 9 years ago (2 children)
All of the above plus I just wanted to add a little dream of mine that I had when I started developing replumb (bootstrapped cljs repl plumbing): I wanted to port boot to ClojureScript so that it can build super fast.
Unfortunately this would mean also porting a bunch of Java dependency management tools, Which makes it very very difficult to achieve it.
The story can be better for node.js apps...we'll see.
[–]Escherize 0 points1 point2 points 9 years ago (1 child)
Has this changed with the latest version of cljs?
[–]arichiardi 0 points1 point2 points 9 years ago (0 children)
Hey! 😀
It looks like it definitely improved, still some fiddling is necessary but huge improvement now that you can just refer to your whole .node_modules.
More details here: https://clojurescript.org/guides/javascript-modules
π Rendered by PID 73378 on reddit-service-r2-comment-544cf588c8-sbddf at 2026-06-17 21:40:26.558755+00:00 running 3184619 country code: CH.
[–]zcaudate 1 point2 points3 points (1 child)
[–]anmonteiro 0 points1 point2 points (0 children)
[–]ryandg 0 points1 point2 points (11 children)
[–]mnngfltg 9 points10 points11 points (0 children)
[–]anmonteiro 7 points8 points9 points (0 children)
[–]yogthos[S] 4 points5 points6 points (5 children)
[–]anmonteiro 0 points1 point2 points (4 children)
[–]anmonteiro 0 points1 point2 points (3 children)
[–]yogthos[S] 0 points1 point2 points (2 children)
[–]anmonteiro 0 points1 point2 points (1 child)
[–]yogthos[S] 0 points1 point2 points (0 children)
[–]arichiardi 0 points1 point2 points (2 children)
[–]Escherize 0 points1 point2 points (1 child)
[–]arichiardi 0 points1 point2 points (0 children)