Clojure conceptsλ︎
Clojure is an elegant language for a more civilized development experience.
Clojure supports the creation of simple software systems using immutable values and encouraging a pragmatic approach to pure functional design.
A simple syntax means Clojure is quick to learn and a wide range of open source libraries provides a rapid way to build any kind of software. Designed as a hosted language, Clojure runs on many platforms including the Java Virtual Machine, GraalVM, Microsoft.Net, JavaScript engines. Simple host language interoperability provides access to libraries from a wide range of programming languages, further extending the reach of Clojure.
Experiment with the Clojure language to help understand concepts
Spend some time eevaluating code in the REPL and then revisit this section to get a deeper understanding of the design and philosophy of the Clojure approach to functional programming.
Clojure concepts are easier to relate to whist practicing with Clojure and building Clojure software solutions.
Ten Big Ideas plus oneλ︎
The key to understanding Clojure is ideas, not language constructs but the concepts that shape the language.
Each of these ideas is valuable by itself, not only in Clojure. Taken together, however, they Begin to fill in the picture of why Clojure is changing the way many programmers think about software development.
- Extensible Data Notation
- Persistent Data Structures
- Sequences
- Transducers
- Specification
- Dynamic Development
- Async Programming
- Protocols
- ClojureScript
- Logic query / Logic Programming
- Atomic Succession Model
Stuart Halloway presents Clojure in 10 big ideas (plus one) in the following video, also see presentation Content
- 2013 RuPy slides
- 2017 Chicago JUG slides
Antithesis of Clojure and simple software designλ︎
In Narcissistic Design by Stuart Halloway, the antithesis of the Clojure view of software development is presented as a description of how unproductive and valueless much of the software industry has been in the past.
Its essentially a guide on what to avoid if you are a responsible and professional software developer.