5 ms·
Clojure brings a couple other unique features to the table: * Pervasive use of performant persistent data structures. * Pervasive "time" (state/identity) m
by swannodette 16y ago
Clojure brings a couple other unique features to the table:
* Pervasive use of performant persistent data structures.
* Pervasive "time" (state/identity) management.
* Dynamic type classes (w/o punting on the expression problem)
And in 2010 Clojure has something unique among other Lisps - it's core data structures are built on proper abstractions. They are extensible and you can even swap in your own implementations.
EDIT: modified the points to make them more specific. From what I can tell Haskell doesn't ship with persistent datastructures w/ Clojure's perf guarantees. And the concurrency stuff (STM etc) is tucked away in libraries that need to be imported. So pervasive here is key in the sense that these features are considered core languages primitives.
- derleth 16y ago> And in 2010 Clojure has something unique among other Lisps - it's core data structures are built on proper abstractions. They are extensible and you can even swap in your own implementations. To the extent this makes sense, it's equally true of Common Lisp.
- ScottBurson 16y ago> To the extent this makes sense, it's equally true of Common Lisp. I'm afraid not. Christophe Rhodes has a proposal for an extensible sequence protocol, but AFAIK it is implemented only in SBCL. There's no portable way in CL to extend the built-in hash tables. And you certainly can't have your own cons class that responds to the built-in CAR and CDR. Of course you can always shadow the builtin names and redefine them in your package as generic functions; this is what I did in my FSet functional collections library. But that's not quite the same thing as having extensibility designed in.
- amalcon 16y agoNone of those are really unique, per se: Haskell has the first two, and several languages have all or almost all the benefits of the third by way of fully dynamic typing. The first two are certainly very rare, though, and Clojure certainly has a different approach to the third than I'm used to seeing.