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