4 ms·
In many ways I feel like Clojure is a better Lisp than Lisp itself. Syntactic niceties like support for vectors/maps/sets are, once you've gotten used to them,
by staplung 5y ago
In many ways I feel like Clojure is a better Lisp than Lisp itself. Syntactic niceties like support for vectors/maps/sets are, once you've gotten used to them, hard to do without. And although it's orthogonal to the syntax, I also appreciate its focus on immutability. I just with there was a Lisp like it that didn't run on the JVM.
- subderisorious 5y agoLike ClojureScript?
- naruhodo 5y ago> I just with there was a Lisp like it that didn't run on the JVM. There are a few, with varying degrees of distance from the JVM and varying degrees of similarity to Clojure. - There's ClojureScript, which is Clojure transpiled to JavaScript. - See also Lumo (<https://github.com/anmonteiro/lumo>) and Planck (<https://planck-repl.org/guide-all.html>) - There's Babashka (https://github.com/babashka/babashka https://github.com/babashka/babashka), which is a natively-compiled Clojure interpreter, implemented with the Small Clojure Interpreter (https://github.com/babashka/sci https://github.com/babashka/sci) and GraalVM for native compilation. - There's Joker (https://github.com/candid82/joker https://github.com/candid82/joker) with a similar mission to Babashka, but commonly used as a linter. - There's ClojureCLR (https://groups.google.com/g/clojure-clr https://groups.google.com/g/clojure-clr) on the Common Language Runtime. - There's Cloture (https://github.com/ruricolist/cloture https://github.com/ruricolist/cloture), which is Clojure in Common Lisp. - There's Clojerl (https://www.clojerl.org/ https://www.clojerl.org/), which is Clojure for the Erlang VM. - There's Pixie (https://blog.goodstuff.im/pixie https://blog.goodstuff.im/pixie), with Clojure syntax, but compiling to native. - There's Ferret (<https://github.com/nakkaya/ferret https://github.com/nakkaya/ferret>) which is Clojure transpiled to C++11. - There are some Lisps that have borrowed Clojure's syntax: - Janet <https://janet-lang.org/> - Carp <https://github.com/carp-lang/Carp> There are a variety of other Lisp-like languages listed here: https://github.com/dundalek/awesome-lisp-languages https://github.com/dundalek/awesome-lisp-languages Apologies for the formatting.
- Zababa 5y agoI'm surprised to see no Clojure built on Go. Is there a technical reason why this wouldn't be a good idea?
- capableweb 5y ago> - There's Joker (https://github.com/candid82/joker https://github.com/candid82/joker) with a similar mission to Babashka, but commonly used as a linter. Joker is a Clojure interpreter, mostly used as a linter in the community but can be used as a runtime as well.
- Zababa 5y agoBy "built on Go" I meant like Java: you can use Go libraries and compile it as you would compile Go code, to a single binary.
- capableweb 5y agoI see! "Built on X" would usually refer to what language something is built in, while what you're talking about is "interoperability" with the host language. But yeah, unfortunately Joker doesn't do interop, which is sad because it's one of the coolest features of the Clojure language.
- dmurray 5y agoIs this surprising? I don't see an ecosystem of languages targeting the Go runtime, in contrast to the JVM, Javascript, Erlang, MS CLR... I don't think this is necessarily a matter of popularity or maturity. I don't know of languages that compile to Python bytecode, either. In Python's case I suspect the VM is so optimized for Python that it makes an inflexible target for other languages: I don't know enough about this subject to say whether that's the case for Go as well.
- Zababa 5y ago> Is this surprising? I don't see an ecosystem of languages targeting the Go runtime, in contrast to the JVM, Javascript, Erlang, MS CLR... I think I'm surprised in general that no language targets the Go runtime. A ML built on Go could probably be popular, lots of people would like features from it. Not exactly bytecode but Hy https://github.com/hylang/hy https://github.com/hylang/hy is a dialect of Lisp that compiles to Python.
- mathisonturing 5y agoCurious - why is running on JVM bad?
- LandR 5y agoVery slow startup for one.
- the-alchemist 5y agoYeah, somewhat agree. The Clojure community has put so much effort into working with GraalVM. * https://convexhuman.com/graalvm-clojure.html https://convexhuman.com/graalvm-clojure.html * https://nitor.com/en/articles/fast-cold-starts-for-clojure-in-aws-lambda-using-graalvm-native-image https://nitor.com/en/articles/fast-cold-starts-for-clojure-i... * https://www.innoq.com/en/blog/native-clojure-and-graalvm/ https://www.innoq.com/en/blog/native-clojure-and-graalvm/ Since development in the REPL is so common (watch any Clojure live coding session), JVM startup time isn't much of an issue in practice.
- lispm 5y agoThis solves the startup-time of (static) applications, but not the startup time of for example executables, which include the development environment.