3 ms·
I think people here are making a lot of good points put I want to be a bit more specific. I don't have a lot of experinace with others lisps so please correct m
by nickik 8y ago
I think people here are making a lot of good points put I want to be a bit more specific. I don't have a lot of experinace with others lisps so please correct me.
- The EDN (https://github.com/edn-format/edn https://github.com/edn-format/edn) data format is a further development of the code is data idea. 'Tagged Literals' are interesting feature and used in Clojure to make code shared between different Hosts, mostly JS/JVM.
- Transducers are a new interesting features that are fairly unique to Clojure (https://clojure.org/reference/transducers https://clojure.org/reference/transducers)
- Reducers (https://clojure.org/reference/reducers https://clojure.org/reference/reducers)
- Clojure Multimethods are different from CLOS in CL and one interesting feature are stand alone hierarchies. Some people would maybe call this an step back from CLOS. https://clojure.org/reference/multimethods https://clojure.org/reference/multimethods
- Concurrency primitives like Agents and Refs (featuring Software Transactional Memory) are fairly unique to Clojure.
- Metadata. In Clojure most types can have metadata attached, meaning data that flows threw the program with your data but does not effect things like equality or size.
- Protocols are dynamic single dispatch system
- spec. Clojure Spec is a core part of Clojure now and used internally as well. Its a type of dynamic specification system and not like most systems of this type (https://clojure.org/guides/spec https://clojure.org/guides/spec)
Some more information here: https://clojure.org/reference/lisps https://clojure.org/reference/lisps