I've been building a personal project in both Clojure and Common Lisp to make a DSL for scraping web data, transforming it, and outputting it to a few backend formats. I would say it's been significantly harder to achieve the same functionality in CL than Clojure, but there are major perks to the ecosystem. I was surprised by how much I've valued conditions and restarts, type inference from SBCL, stack traces, and to…
I've been building a personal project in both Clojure and Common Lisp to make a DSL for scraping web data, transforming it, and outputting it to a few backend formats. I would say it's been significantly harder to achieve the same functionality in CL than Clojure, but there are major perks to the ecosystem. I was surprised by how much I've valued conditions and restarts, type inference from SBCL, stack traces, and to…
I'm curious in the ways that clojure is faster to get going and more intuitive. Sbcl and quicklisp seem like they are a bit more straight forward/stable than figuring out how to do a jvm nowadays.
I wish more languages had the interactive development capabilities of Common Lisp. The language deserves more love than it gets.
Yeah, absolutely. I think CL the language should be modernised (more coherent stdlib, naming scheme for destructive functions, etc) but it's basically the only language that offers a handful of really cool features that I can't get anywhere else.
I've been building a personal project in both Clojure and Common Lisp to make a DSL for scraping web data, transforming it, and outputting it to a few backend formats. I would say it's been significantly harder to achieve the same functionality in CL than Clojure, but there are major perks to the ecosystem. I was surprised by how much I've valued conditions and restarts, type inference from SBCL, stack traces, and to…
> ... and has far better documentation.
I suppose libraries to access the 'net (and WWW specifically) etc. are meant. CL the language is very exhaustively documented, even if much of that documentation is more than 20 years old (and a good share predates Google, so it might not be as accessible).
Yeah, absolutely. I think CL the language should be modernised (more coherent stdlib, naming scheme for destructive functions, etc) but it's basically the only language that offers a handful of really cool features that I can't get anywhere else.
Any specific features that stand out to you?
Compile time macros, interactivity, CLOS, having the compiler readily available, ability to inspect any values, conditions and restarts, ...
I've been building a personal project in both Clojure and Common Lisp to make a DSL for scraping web data, transforming it, and outputting it to a few backend formats. I would say it's been significantly harder to achieve the same functionality in CL than Clojure, but there are major perks to the ecosystem. I was surprised by how much I've valued conditions and restarts, type inference from SBCL, stack traces, and to…
> ... and has far better documentation. I suppose libraries to access the 'net (and WWW specifically) etc. are meant. CL the language is very exhaustively documented, even if much of that documentation is more than 20 years old (and a good share predates Google, so it might not be as accessible).
That was specifically referring to the availability of code examples for the core library on clojuredocs.org (I know hyperspec has some code examples as well, but they haven't been as comprehensive imo) and the ability to seamlessly jump into library source code within Emacs.
I've been building a personal project in both Clojure and Common Lisp to make a DSL for scraping web data, transforming it, and outputting it to a few backend formats. I would say it's been significantly harder to achieve the same functionality in CL than Clojure, but there are major perks to the ecosystem. I was surprised by how much I've valued conditions and restarts, type inference from SBCL, stack traces, and to…
I'm curious in the ways that clojure is faster to get going and more intuitive. Sbcl and quicklisp seem like they are a bit more straight forward/stable than figuring out how to do a jvm nowadays.
Some examples of things that make Clojure click quickly are being able to use seq operations on all core data structures instead of learning how to work with list, vectors, hash tables, and sets separately, documentation being great with tons of code examples on clojuredocs.org, and the fact that you know you need to "do everything the functional way" up front means less decision making. And prolific overuse of hash tables speeds things up too :)
I'm curious in the ways that clojure is faster to get going and more intuitive. Sbcl and quicklisp seem like they are a bit more straight forward/stable than figuring out how to do a jvm nowadays.
Some examples of things that make Clojure click quickly are being able to use seq operations on all core data structures instead of learning how to work with list, vectors, hash tables, and sets separately, documentation being great with tons of code examples on clojuredocs.org, and the fact that you know you need to "do everything the functional way" up front means less decision making. And prolific overuse of hash…
Thanks, that makes sense.
I'd expect you could make the same heavy use of hashtables in either, though I suspect it isn't obvious to lean on setf so much if new to CL? That, or if you are insisting on immutable structures?
I confess I assumed that alists are probably more competitive in speed for many collections than makes sense.
Some examples of things that make Clojure click quickly are being able to use seq operations on all core data structures instead of learning how to work with list, vectors, hash tables, and sets separately, documentation being great with tons of code examples on clojuredocs.org, and the fact that you know you need to "do everything the functional way" up front means less decision making. And prolific overuse of hash…
Thanks, that makes sense. I'd expect you could make the same heavy use of hashtables in either, though I suspect it isn't obvious to lean on setf so much if new to CL? That, or if you are insisting on immutable structures? I confess I assumed that alists are probably more competitive in speed for many collections than makes sense.
Well, for my project I am using CLOS in CL where I used hash tables in Clojure. But yeah, if I went for hash tables, it would be getfs and setfs to mutate the table, or I saw there are immutable operations for hash tables in CL as well. It just takes a little more code and cognitive load to work with.
> ... and has far better documentation. I suppose libraries to access the 'net (and WWW specifically) etc. are meant. CL the language is very exhaustively documented, even if much of that documentation is more than 20 years old (and a good share predates Google, so it might not be as accessible).
That was specifically referring to the availability of code examples for the core library on clojuredocs.org (I know hyperspec has some code examples as well, but they haven't been as comprehensive imo) and the ability to seamlessly jump into library source code within Emacs.