Watched the documentary and want to dig in? Here are a few terms you’ll encounter.
| Term | Definition |
|---|---|
Lisp |
A family of programming languages that represent code as nested lists enclosed in parentheses. Clojure is a Lisp dialect. |
REPL |
Read-Eval-Print Loop. An interactive session that reads an expression, evaluates it, prints the result, and repeats. Clojure developers use the REPL to build and test programs while they run. |
Functional programming |
A programming style built around functions that take values and return values, minimizing mutable state and side effects. |
Value |
A piece of data that does not change after creation: a number, a string, or a persistent collection. Clojure defaults to values; you opt in to mutable state explicitly when you need it. |
Persistent data structure |
A collection that preserves its previous version when you modify it. Adding an element returns a new collection; the original remains unchanged. "Persistent" here means version-preserving, not stored to disk. |
Accidental complexity |
Difficulty in software caused by your tools and design choices, not by the problem itself. Contrasted with essential (or incidental) complexity, which is inherent to the problem domain. |
STM |
Software Transactional Memory. A concurrency model that coordinates shared-state changes through transactions instead of locks. |
Hosted language |
A language designed to run on an existing platform rather than its own runtime. Clojure runs on the JVM, ClojureScript compiles to JavaScript, and ClojureCLR targets the .NET CLR. |