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

I'm coming to agree with him about Clojure being the best language out currently. I've used both it and SBCL and I prefer the former, because SBCL's lack of up-to-date libraries (compared to the JVM) can be frustrating.

I wouldn't call macros a hard necessity, however. You can accomplish quite a lot, quickly, in Ocaml or Haskell, even though they're statically typed languages with no macros. Functors, type classes, and various cool design patterns (e.g. monads) provide a lot of the abstraction and code reuse that macros provide. Also, I'd rather use a statically-typed language for a project with 4+ developers.

I think that 90% of Lisp's headway over a language like Java comes from the functional paradigm, and 10% from macros.



> SBCL's lack of up-to-date libraries can be frustrating.

But on the flip-side, Clojure's lack of a real object system can be frustrating. It is also annoying that you have to actively work around the JVM (for example, when making tail calls). Generally it is a beta-quality languages with some issues that need to be worked out. (I stick with Haskell for now when I want to write in a functional style, and CL for everything else.)

Also, while having Java libraries is better than having no libraries at all, the code that uses Java libraries becomes very un-lispy. It is a reasonable compromise, but certainly not ideal.


Clojure has all the components necessary for an object system: multimethods, hierarchies and structs. It's not quite an object system, but it's not hard to roll your own from these pieces. Someone on the group has made a CLOS-inspired library called Spinoza (formally CLJOS) using these components, which you might want to look into if you're fussed about having proper objects.


The lack of tail call optimization sucks-- I agree. Any language that wants to be thriving in 2015 is going to have to facilitate the full spectrum of functional programming, much of which requires TCO.

Regarding Clojure's object system, people tend to build their own. The tools are there. Within 12-24 months, there'll probably be a "default" object system. Right now, there isn't one because the language is still molten hot right now.

Most Clojure code I've written hasn't been that un-Lispy. Usually the first thing I do is build helper functions to abstract away all the Java classes.




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

Search: