Functional languages
Work with a Lisp dialect designed for immutable data and the JVM.
(def message "Hello from Clojure")
(println message)COURSE CURRICULUM
Finish one section at a time or jump directly to a concept you need.
Learn how clojure projects, repl workflow, and the jvm works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how forms, evaluation, and reader syntax works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how symbols, vars, let bindings, and scope works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how numbers, keywords, symbols, and nil works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how functions, threading macros, and equality works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how conditionals, cond, case, and truthiness works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how sequences, recursion, and lazy evaluation works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how functions, multimethods, and higher-order design works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how vectors, lists, maps, sets, and transients works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how strings, regular expressions, and edn works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how exceptions, ex-info, and validation data works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how namespaces, deps, aliases, and libraries works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how protocols, records, and data-oriented design works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how files, futures, agents, atoms, and refs works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.
Learn how testing functions and state transitions works in Clojure, why the underlying model matters, and how to apply it in a small program without hiding important trade-offs.