
Explore Clojure's dynamic, concurrent-friendly design, Java interoperability, and extensive ecosystem, with live coding, minimal syntax, functional programming, immutable collections, metaprogramming, and a quick web app.
Meet an author with a decade of software development experience who embraced Clojure four years ago, making it their go-to language for prototyping and writing about it across publications.
practice clojure basics in Light Table by defining a namespace, printing hello world, and evaluating nested expressions. recognize clojure syntax as lists of data and homoiconicity in experimentation.
Explore Clojure's type system, using the type macro to inspect longs, doubles, booleans, strings, keywords, and symbols, and review lists, vectors, maps, sets, and constructors.
Explore how control flow works in Clojure, including if, when, case, and cond, and master binding with let and do for controlled evaluation and side effects.
Learn how to define and call functions in Clojure as first-class values, use def and docstrings, handle variadic and destructured arguments, and inspect documentation via the repl.
Explore immutable Clojure collections and learn to build and modify lists, vectors, maps, and sets with cons, conj, and assoc, while using get and update and exploring lazy sequences.
Explore summing a list in Clojure through recursion with an accumulator, then replace recursion with recur, loop, and finally reduce for idiomatic, efficient code.
Learn to scaffold a Clojure project with Leiningen, install from leiningen.org, and manage dependencies in project.clj. Run your hello world main via lein run.
Import external modules in Clojure with require or import, alias or refer for clean function access, and learn how to import Java classes from the JVM.
Discover how the closure test framework offers assertions, supports thrown exceptions, and uses def test with the testing macro to validate code and organize suites.
Learn java interop in clojure by importing java classes, calling static methods, constructing objects, and using dot notation or instance-first syntax, with mutability and type hints to optimize performance.
Learn how to use Clojure's proxy macro to implement Java classes and interfaces, and compare reify for faster, compile-time class creation, with thread pool examples.
Generate a Java class in Clojure with the gen-class macro, specifying the class name, methods, and state via a constructor, init, and ahead-of-time compilation.
Explore using Java code with Leiningen in a Clojure project by configuring multiple source paths, writing a Java class, importing it, and invoking its methods from the repl.
Explore basic concurrency in Clojure by using threads, promises with deliver, and deref to retrieve values; leverage futures and delay for nonblocking work, and memoization to speed repeated computations.
Explore Clojure stm with atoms for safe shared state and transactional updates; use reset, swap, and deref to manage counts, with a validator and exception handling.
Explore Clojure stm concepts by contrasting atoms, refs, and agents, and learn how validators and transactions with do sync ensure safe, parallel updates.
This lecture demonstrates core.async in clojure, creating channels with buffers, using go blocks and loops, and patterns like put, take, reverser, and alts for multi-channel pipelines.
Discover types and records in clojure with def type and def record to build Java-like classes and closures. Learn how to implement Java interfaces and use map constructors and accessors.
Learn how multimethods resolve dispatch flexibly to add new operations and data types, using defmulti, defmethod, keywords, a default, derive, and handling Cockney English.
Define protocols and extend them to records and Java classes to compute circle and square area and perimeter with single-dispatch-based methods, and compare to multimethods.
learn to read and write files in Clojure using spit and slurp, with open, and handle lines as lazy sequences while safely closing resources.
Learn to use clojure with jdbc to connect to a postgresql database, configure a database spec, and perform safe queries, inserts, updates, and transactions via a connection pool.
Build a simple Clojure web app using Ring; handle requests as maps and return a 200 hello world response, run with a Ring adapter on port 3000.
Learn to implement string response middleware in a Ring app to wrap string outputs into proper responses, and apply middleware chains to access request parameters.
Learn to define web routes with composure and ring, using a def roots macro, get and post handlers, and regex matching to map routes to responses.
Learn how to render HTML templates in Clojure using Selmer and Hiccup, including installing dependencies, configuring resource paths, and rendering templates with bindings.
Explore rendering HTML in Clojure with Selmer and Hiccup, a data-structure based templating approach using vectors and maps, and build reusable layers with dynamic titles and forms.
Learn to use the Enlive library to define templates and snippets in Clojure, transform and render HTML via selectors, and compose transformations to generate dynamic pages with Ring.
Learn a dependency injection approach to persistence in a Clojure app, prototyping with refs and atoms, defining a user store protocol, and swapping to a database store later.
Pull together closure, ring, and templates to build the microblog Twiddler. Model items with title and content, render with templates and snippets, and run a dev server for live updates.
Learn to build a Clojure web app by serving assets with resources, wiring routes, handling form posts, rendering markdown, and sanitizing input to prevent injection.
Learn to wield the Clojure language to create useful software by mastering basic syntax. Integrate projects across desktop, distributed servers, and web apps while reading the source code.
In this Learning Clojure training course, expert author Adam Bard will teach you how to write Clojure code and structure Clojure products. This course is designed for the absolute beginner, meaning no experience with Clojure is required, although some programming knowledge would be beneficial.
You will start by learning how to structure Clojure projects, then jump into interacting with Java. From there, Adam will teach you about concurrency, how to write safer software, and how to interact with data stores. Finally, this video training will cover writing a web application with Clojure, including how to route with Compojure, render HTML with Selmer and Hiccup, and render HTML with Enlive.
Once you have completed this computer based training course, you will be fully capable of taking advantage of Clojure's unique feature set to start writing useful software. Working files are included, allowing you to follow along with the author throughout the lessons.