Many languages new and old provide a way to write code using functional programming concepts, however learning those concepts can take a little time especially when they are joined with OO concepts in the same language.
As Clojure has a simple syntax, many find it easier to focus on learning the concepts and design of functional programming. Then either taking those concepts back to other languages or continuing with Clojure.
At DevoxxUK 2016 I have the pleasure of running a workshop where I can help developers understand the core functional concepts, using Clojure (and Spacemacs) as simple tools.
Any developer starting to learning functional programing or interested to understand the concepts should join in. No prior experience of Clojure is required, although you should get even more out of the workshop if you have a little experience with the language.
As its DevoxxUK I’m assuming most people will have a Java background, but this is not a requirement either.
The requirements for the “Thinking functional” workshop are quite small and setup is relatively simple. You will need:
- Java Runtime Environment (JRE) or the Java Software Development Kit (JDK) - version 8 is preferable (7 or 6 should still work)
- Leiningen.org build automation tool - like Maven but without the XML (project configuration is in Clojure too)
- A Clojure aware editor (not essentai, but recommended)
See my simple Clojure development environment guide for details on setting up Java 8, Leiningen & LightTable.
With plenty of opportunity to try code out for yourself, this workshop will discuss and provide examples of the following functional programming concepts.
- Pure & impure Functions
- Immutability & persistent data structures
- Higher Order / First Class functions
- Functional composition / chaining functions
- Functors / map / reduce
- Recursion / iteration
- Sequence / List comprehension
- Lazy Evaluation (Ratios)
- Destructuring / pattern matching
- Tail recursion
- Managine state change safely
By the end of this workshop you should know much more about Functional Programming, wether you decide to continue with Clojure or take these concepts to another language.
Update: The workshop is now available online, so please take a look at the thinking functionally section.
There are plenty of follow-on resources for Clojure & functional programming included in the workshop and all code will be available in the Practicalli Github organization.
This work is licensed under a Creative Commons Attribution 4.0 ShareAlike License, including custom images & stylesheets. Permissions beyond the scope of this license may be available at @jr0cket