Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I would like to hear your thoughts on Clojure's serious design flaws. I'm currently learning the language and haven't come across anything warning me of such things.


From Spencer's twitter a bit ago:

"Clojure inherits many problems and flawed patterns from common lisp."

http://twitter.com/#!/spencertipping


I have two years experience with Clojure and about a year working with Scala (plus use of Ocaml and a bit of Haskell). Clojure and Scala both have warts. Many, many warts, as all languages do. Still, I can't say that I've found major, intractable "design flaws" (as in, design decisions leaving me convinced I could do it better) in either. They run on the JVM, and they're ambitious languages, so warts are inevitable. That's hella hard, and both languages do an excellent job considering the constraints involved.

Most of the things I find myself disliking in these languages have more to do with JVM legacy (e.g. type erasure in Scala) but that's also what gave them a chance at being mainstream, so no complaints there.


It's worth noting that Reifeid generics also have their limitations. I believe Haskell also does a similar level of erasure. Reified generics makes it harder to include higher order types and so the level of abstraction in Scala's collections or monad transformers would be much harder without type erasure. Haskell's type system is better at keeping the annoyance of erased types away by not just casting every thing to a top type.


Surely Ocaml also has its warts - in the end my feeling is that of Simoni "you must create a programming language, or be enslav'd by another man's." (http://axisofeval.blogspot.com.br/2010/06/letter-to-young-pl...)

And for now use whatever gets the job done.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: