Clojure
Full course · 21 lessonsClojure is a modern, functional Lisp dialect on the JVM. It emphasizes immutability, persistent data structures, and concurrency, with powerful macro capabilities for metaprogramming.
Getting Started with Clojure
Installation, the REPL, forms, namespaces, and Java interop.
Values, Types, and Immutability
Immutable data, numbers, strings, keywords, and truthiness.
Control Flow
if, when, cond, case, and condp.
Collections
Vectors, lists, maps, and sets — the four core structures.
Functions
Anonymous functions, defn, arities, and destructuring.
Sequences and Transforms
map, filter, reduce, threading macros, and the seq abstraction.
Recursion
loop/recur, tail calls, and building results.
Lazy Sequences
Laziness, infinite sequences, and on-demand computation.
Maps in Depth
Keywords as functions, update/merge, nested access, records.
Error Handling
Result maps, try/catch, nil, and if-let patterns.
Atoms, Refs, and Agents
Synchronous atoms, coordinated refs, and async agents.
Futures, Promises, and Parallelism
Future, promise, pmap, and background tasks.
Binding and Scope
def, let, destructuring, and scope rules.
Higher-Order Functions
First-class functions, composition, partial, apply.
Namespaces and Interop
require, refer, project layout, and Java interop.
Protocols and Multimethods
Protocols, extend-type, records, and multimethods.
Tooling and Testing
Leiningen, deps.edn, clojure.test, and the REPL workflow.
Documentation and Metadata
Docstrings, metadata, comments, and debugging.
Concurrency in Depth
The concurrency model, dynamic vars, STM, and identity.
Real-World Data Pipelines
Text analysis, map-reduce, grouping, and config as data.
Macros and the Ecosystem
Macros, quote/unquote, Ring/Compojure, and the community.

