O'Reilly logo
live online training icon Live Online training

Fundamentals of Clojure

Getting started with Clojure as a functional language

Tiago Luchini

Clojure is a powerful and purely functional language in the tradition of the iconic Lisp. Clojure is supported by the Java Virtual Machine and can extract all the benefits provided by the Java ecosystem. ClojureScript, a highly portable version of Clojure, leverages the JavaScript ecosystem and can be run on browsers or Node.js environments.

Participants will learn the foundations of Clojure, and how to set up their systems while diving into the functional aspects of the language and the ecosystem. Key concepts such as immutable data structures and a REPL-driven development environment will be covered as well. We will cover the features of the latest Clojure 1.10. Participants will be able to write their first programs in Clojure by the end of this course.

During the last years, Clojure has picked up a lot of interest not only on server-side development but also database, user experience, and machine learning development. Due to Clojure's unique potential to be the supporting language all the way from the database to the front end code, several successful start-ups have chosen it as the foundations of their tech stack as a way to achieve productivity and deliver better products faster.

What you'll learn-and how you can apply it

  • Understand the foundations of functional programming
  • Understand immutability and iconicity and where they can be applied
  • Have a Clojure development environment setup
  • Learn the foundations of REPL-driven development
  • Learn core Clojure data structures
  • Learn core Clojure functions and control structures
  • Be able to dive deeper into solving problems functionally
  • Be able to write your very own Clojure programs

This training course is for you because...

This course is a beginner to intermediate level introduction to Clojure. Attendants are expected to know the basics of programming in at least one language. The course should attract developers who are interested in learning the foundations of a purely functional language while learning language features that are on high demand.


  • Attendees are expected to know the basics of programming in at least one language.
  • Basic understanding of operating systems
  • Some ability with bash or similar

Course Setup

Any hardware from the last 4 years, running MacOS or Linux (Windows will not be supported).

About your instructor

  • Tiago Luchini’s passion is bridging software development and business together via successful digital products. In his 22 years of experience, he has personally shipped more than 40 digital products and has ramped up global teams responsible for planning, development and releasing hundreds of digital products.

    At Work & Co he leads desktop, web, mobile, and back-end development efforts for several clients including Pepsi, Facebook, Google, Twitter, Philz Coffee, Virgin America, Disney and the NBA. He is responsible for Work & Co’s technology strategy and vision.

    He is an alum of Columbia University, London Business School, and Unicamp (Brazil) where he received his MBA and MSc. In his past life, he was a technologist at Ixonos (Finland), where he oversaw large-scale technical projects and ramped up mobile device R&D centers in Beijing and Chengdu (China) for clients such as Nokia and Samsung.


The timeframes are only estimates and may vary according to how the class is progressing

Lesson 1: Foundations of Clojure (25 min)

  • The JVM and JS Ecosystem
  • Cross-compilation
  • Basic interop
  • Understanding Immutability
  • Understanding Homoiconicity
  • Functions as First Class Citizens

Lesson 2: Starting Off with Clojure (45 min)

  • Introduction to building system
  • boot and lein
  • Clojure’s own tools.deps
  • Understanding and using the REPL
  • Introduction to IDE/REPL integration
  • REPL Integration options
  • Pareinfer vs. Paredit
  • Example workflow (benefits and gotchas)

Lab 1: System Setup (20 min)

General Q&A (10 min)

Break (5 min)

Lesson 3: Clojure Basics (35 min)

  • Namespaces
  • Simple Values
  • Strings
  • Booleans and nil
  • Keywords
  • Numbers
  • Basic Arithmetic
  • Data Structures and Collections
  • Lists
  • Vectors
  • Maps
  • Functions
  • What are the functions?
  • Functions that take other functions
  • Flow Control and Logic
  • If
  • Cond

Lab 2: Your First Program (20 min)

Break (5 min)

Lesson 4: Thinking functionally (35 min)

  • More Functions
  • Predicate functions
  • Anonymous functions
  • Pure functions
  • Sequences and Higher Order Functions
  • Lists, vectors, and hash-maps
  • Sequence functions
  • Key-value functions
  • map, reduce, filter, apply, etc.
  • Solving problems functionally

Lab 3: Functional Puzzle (30 min)

General Q&A (10 min)