Learning Clojure

For detailed coverage of Clojure, consult the language and API reference at clojure.org. Also see Clojure Programming.

Clojure (read as closure), is a powerful, lisp-1 programming language designed by Rich Hickey and designed to run on the Java Virtual Machine. This book shall provide a detailed introduction to the constructs of Clojure, and act as a tutorial through the features of the language.

Getting Started

edit
History  
A brief history of the Clojure language.
Installation  
Learn how to install Clojure on Windows, Linux, and Mac
REPL  
Learn how to launch the REPL execution system and the classic "Hello World" application

Basics

edit
Basic Syntax  
Describes the basics in how the applications you write will be interpreted
Coding Conventions  
Quickly describes the generally accepted conventions for Clojure.
Functional Programming  
The entities used to store data of various shapes
Namespaces  
Identifies how to encapsulate a program from other programs
Basic Operations  
Explains how use essential functions
Data Types  
Explanation of basic data types in the Clojure language.
Data Structures  
Explains how to use Clojure hash, list, and array data structures
Meta Data  
Explaining meta data in the Clojure language.
Special Forms  
Learn how to use several utility functions to support Clojure
Branching and Monads  
How to implement imperative style into a functional language
Exception Handling  
Responding to errors that can occur
Evaluation  
How expressions are evaluated

Java Integration

edit
Calling Java  
Learn how to call Java functions from within Clojure
Building Jars  
Learn how to take Clojure code and create a portable Java executable

Advanced Topics

edit
Macros  
Learn how to utilize the macro system Clojure uses
Concurrent Programming  
Learn how to write programs that utilize concurrent execution
Leiningen  
Learn the perfected Clojure build system
Reader Macros  
Macros that control the way code is interpreted
Unit Testing  
Learn how to write unit tests in Clojure

Unsorted sections

edit
Multimethods and polymorphism
Collection functions
Destructuring
Atom