Functional programming in Clojure

Basic tools

Get equipped in your fight against the dragons.

  • Installing the developement environment
    • Java
    • Leiningen
    • Editor
    • Git
  • How to submit answers to exercises

Training day

Get your survival skills up to shape.

  • Structure of the exercise project
  • Using the REPL
  • Prefix syntax
  • Defining functions

I am a horse in the land of booleans

Get your horse!

  • if and truthiness
  • Everything is an expression and thus has a value

Structured data

Learn the structural weaknesses of dragons.

  • Local names
  • Data structures
    • Vectors
    • Maps
    • Sets
  • Abstract sequences
    • Mapping
    • Filtering

Style

Polish your boots and armour.

  • Indentation
  • Whitespace
  • Idioms

P-P-P-Pokerface

Project: poker hand evaluator

Predicates

  • Functions as values
  • Predicate functions
  • Higher-order functions
    • some
    • every?

Recursion

Down the rabbit hole.

  • Recursion over sequences
  • Recursion over numbers
  • Nonlinear recursion
    • Tree recursion
  • Passing state

Looping is recursion

Calling tails.

  • Iteration with tail recursion
    • loop
    • recur

One Function to rule them all

One Function to rule them all, One Function to find them,
One Function to bring them all and in the darkness bind them
In the Land of Code where the Off-By-Ones lie.

  • Accumulating recursion with reduce
  • Variable arguments

blorg blorg blorg

A blog engine written in Clojure, studied.

Sudoku

Project: sudoku solver