4 ms·
>but it's unfortunate that it has to be Clojure Could you elaborate on that a bit ? Why is Scheme/CL superior to clojure ? I chose to explore Clojure out of p
by codeshaman 11y ago
>but it's unfortunate that it has to be Clojure
Could you elaborate on that a bit ? Why is Scheme/CL superior to clojure ?
I chose to explore Clojure out of practicality.
Clojure has the jvm (and the ocean of libs for it) and javascript (with another ocean of libs) on it's fingertips and in theory it allows you to build any modern application..
While CL, Scheme doesn't seem to have as much library support (although I honestly don't know a lot about either of them).
- davexunit 11y ago>Why is Scheme/CL superior to clojure ? Clojure's license choice is unideal: the GPL-incompatible Eclipse Public License. On the JVM, it's startup performance is quite slow, and personally I don't like the Java environment at all. Furthermore, the syntax choices baffle me: Having to specifically know when a form uses () or [] is just odd. The 'let' form stands out as a good example of Clojure's bad language design choices. There's also no tail-call optimization, one has to explicitly use a 'recur' form to approximate it. I'll stop here. Now that I've ranted about that, here's what I like about Clojure: The persistent data structures and the concept of transients. Both of these can be implemented in the Lisp of one's preference, though, and someone's already done the basic work for my Lisp of choice: Guile Scheme. >CL, Scheme doesn't seem to have as much library support Any decent CL or Scheme implementation gives you access to a C FFI, which provides another ocean of libs. But yes, there are fewer libraries generally, but people were okay with that for Clojure. Clojure hackers wrote a whole bunch of libraries because they were excited about the power the language gave them. If more people would recognize the immense power and value of CL and Scheme, libraries would cease to be an issue, people would write the missing bits. I work on a GNU/Linux distribution written almost entirely in Scheme. I think that's a pretty practical application, and good evidence that Lisps that aren't Clojure are good choices, too.
- dkersten 11y agoI don't like the Java environment at all. Furthermore, the syntax choices baffle me: Having to specifically know when a form uses () or [] is just odd. The 'let' form stands out as a good example of Clojure's bad language design choices. There's also no tail-call optimization, one has to explicitly use a 'recur' form to approximate it. I'll stop here. Everything you've said in the above quoted text is a selling point for me, not a negative thing. I like having the java environment because it brings a lot to the table. I really like (let [...] ...) because it makes it visually obvious to me where the bindings are. I also like explicitly using recur because it makes intent obvious and lets the compiler complain if its not in a tail position.
- malkia 11y ago+1 for recur. It was first puzzling to me, and looked like a limitation, until I saw the light. It actually forces you to make sure you not going to cause actual recursion (so no stack overflow). I also like the [] vector syntax, since you don't need to quote it (no calls expected there).