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

 * /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

 * 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

 * /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

 * /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

 * /Multimethods and polymorphism/
 * /Collection functions/
 * /Destructuring/
 * /Atom/