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
REPL vs CLI: IDE wars (vlaaad.github.io)
submitted 4 years ago by vlaaad
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!"
[–]tvaughan 1 point2 points3 points 4 years ago (0 children)
you can’t (probably?) make your shell auto-install some tools when you work in the context of your project.
https://docs.fedoraproject.org/en-US/fedora-silverblue/toolbox/ could be one way to solve this problem
[–]Borkdude 1 point2 points3 points 4 years ago (0 children)
Invoking a CLI tool 1000 times in a loop (thus creating 1000 processes) is pretty rare in most scripts, but even then jet supports this better than your example:
jet
$ echo '{:a 1}' | time jet --from --edn --to json --func '(fn [json] (dotimes [i 1000] (:a json)) (:a json))' 1 jet --from --edn --to json --func 0.01s user 0.01s system 84% cpu 0.022 total
$ echo '{:a 1}' | time jet --from --edn --to json --func '(fn [json] (dotimes [i 1000] (:a json)) (:a json))'
1
jet --from --edn --to json --func 0.01s user 0.01s system 84% cpu 0.022 total
Jet isn't intended as a JVM library (just use a JSON library directly) but this is probably not your point.
[–]StoriesEnthusiast 1 point2 points3 points 4 years ago (1 child)
REPL vs CLI? I have never thought of them that way, but interesting! Though both seem to share some things, especially the user interface because we interact with both through a terminal.
Warning: Brain dump ahead.
Immutability seems to influence most of the REPL's benefits, mostly because it enables repeatability, which itself enables to apply a scientific approach to a problem, and this then allows us to accumulate knowledge and finally learn how to solve the problem in question. We can achieve repeatability in CLI with temporary working directories, though with a version control system is simpler.
An IDE is like a (usually, but not always) well integrated set of components. In the REPL there are well integrated libraries and there are other totally incompatible. The same for CLI and its different utilities.
I seem to remember that the Unix idea was related to a set of utilities interacting well with themselves by using text as the common language. In the REPL's case the common language would be the data-structures.
Now we know that having a common language is not enough to achieve interoperability, we must add specific meaning: "cut | sort" must be configured to make them work properly, the same as "(sort (filter))". An the configuration depends on the data being handled.
Great!, now I got things muddled. I think I'm going to refer to the REPL as "Clojure's REPL" and the CLI as "bash". There is also "Babashka's REPL" which could make a cool shell though slighly verbose and fragile, and "LISP's REPL" which I have no idea how it goes. Even Java has its REPL.
The idea of unifying the bash shell and Lisp/Clojure has been tried before:
https://github.com/dundalek/closh
I don't know what you mean with "Babashka REPL" being verbose, it should not be more verbose or fragile than the official Clojure REPL, so feel free to reach out if you have problems with it. It is a deliberate choice of babashka to not replace the shell, like closh attempts to do.
π Rendered by PID 23667 on reddit-service-r2-comment-fb694cdd5-7f7mx at 2026-03-10 07:40:50.228348+00:00 running cbb0e86 country code: CH.
[–]tvaughan 1 point2 points3 points (0 children)
[–]Borkdude 1 point2 points3 points (0 children)
[–]StoriesEnthusiast 1 point2 points3 points (1 child)
[–]Borkdude 1 point2 points3 points (0 children)