I am searching for an overview of the 开发者_如何学编程features of Clojure that are coming from other languages than Common Lisp.
For example:
- STM: language X, Y and Z
Your input is welcome!
You might want to have a look at this list of books, that influenced Clojure's design, compiled by Rich Hickey himself. Looking at the titles you'll probably figure out where more of the ideas originated.
Some features loosely based on other languages that I am aware of:
- Lazy evaluation / lazy lists : Haskell
- Persistent data structures : Haskell and other pure functional languages
- Dynamic typing: any dynamic language e.g. Groovy, Javascript
- Type hinting (for performance): various languages
- Code-is-data and macro based meta-programming: LISP
- JVM execution and interoperability: Groovy, Scala
Ideas in Clojure that I believe are pretty original:
- Clojure-style concurrent programming with STM
- Clojure protocols (somewhat like interfaces but more powerful)
STM in clojure is coming from hard research in concurrency and transaction field and have implementations in Haskell(Glasgow Compiler) and more recently Fortress( High Performance Numeric Computation Language by Sun)
精彩评论