6 ms·
> I find Clojure awful both conceptually and implementation-wise (the imposition of lowest common denominators by JVM dependency really sucks here, starting wit
by ashtonkem 5y ago
> I find Clojure awful both conceptually and implementation-wise (the imposition of lowest common denominators by JVM dependency really sucks here, starting with lack of tail calls, but not ending there), so that's most likely not going to happen.
You do you, but I personally would do some thinking on why Clojure has eaten CL’s lunch, despite your belief in its inferior design and implementation.
(Edit: for the record I’ve worked professionally in CL, Clojure, Java, and some others. I think Java is best, but I think that your argument about Clojure being inferior to CL is incorrect).
Also, tail calls? Really? Genuinely can’t remember the last time that mattered to me.
> I don't see why the good things in Clojure should be impossible to achieve in CL as libraries.
I don’t see why “impossible” would be a factor here. It’s not technology that’s holding CL back here, but rather what the community values and spends its collective time on.
- jhgb 5y ago> but I personally would do some thinking on why Clojure has eaten CL’s lunch, despite your belief in its inferior design and implementation. It's largely a similar reason why Java has eaten Smalltalk's lunch (upfront environment costs have been disastrous in the past for both Smalltalk and CL, and in many ways they continue to be - Allegro, LispWorks, VisualWorks are still expensive), plus the fact how Clojure latched itself onto Java's large ecosystem. For a large user base, inferior design and implementation don't matter as much, as PHP has demonstrated amply, so why should they matter here for a similarly large number of people? They won't mind, although some other might. > Also, tail calls? Really? Genuinely can’t remember the last time that mattered to me. It's not the only thing deficient in Clojure, but I've noticed that many fairly common patterns get significantly more convoluted without them. If there's no drawback to having them, why not have them? Oh, wait, I forgot, JVM does not support them...
- pjmlp 5y agoNeither does Lisp in general actually, only Scheme requires tails calls as per language standard. You cannot rely on them if you want to write portable Lisp code.
- jhgb 5y agoWhile it is true that the standard doesn't mandate it, any implementation worth its salt allows you to do tail calls. It's the same with threads; "if you want to write portable Lisp code" you can't expect threads in CL "in general" either. In practice, real-world CL implementations can do threads just fine.
- ashtonkem 5y ago> For a large user base, inferior design and implementation don't matter as much, as PHP has demonstrated amply, so why should they matter here for a similarly large number of people? I find this dismissive attitude so tiring. Given the huge number of people actually shipping useful code in languages with “inferior design”, perhaps you’re just wrong about what’s good design? Either way, implying that Lisp is so much better than what the unwashed masses use is not persuasive, and has a tendency to turn off other people.
- jhgb 5y agoI never said that you can't make good code in PHP. > perhaps you’re just wrong about what’s good design? It does not follow from people making good code in PHP that PHP itself is good (or that it couldn't better than it is), just like it does not follow from people making bad code in any language X that language X is bad. So that would be a "no" on that front. > implying that Lisp is so much better than what the unwashed masses use is not persuasive I think you completely missed my point. It's not supposed to be "persuasive". It's the basis for my own personal decisions. I don't need to "persuade" myself. Some people may make this a basis for their own decisions, but whether they do that or not is their business, not mine. In fact I wouldn't have even mentioned my opinion of Clojure had you not pushed Clojure on me, so there's that. If you don't like that I prefer Clojure over CL, simply don't bring it up the next time.