IN/Clojure is conducting an introductory workshop to Clojure and functional programming on January 12.
New update: The workshop will commence at 0930 hours sharp and will continue until 1800 hours.
Who is it for?
- Programmers proficient in at least one programming language and who want to learn Clojure
- Programmers who are unfamiliar with functional programming
The workshop will be mostly example-driven, with lots of code to follow along with and evaluate in the REPL, interspersed with exercises. The goal is not to exhaustively cover all of Clojure's features in-depth. Rather, we want to provide the attendee with enough of an intuitive understanding of Clojure's capabilities that they can dive deeper into the language later, at their own pace.
What could one do with just a little bit of Clojure?
- Acquire a "feel" of Clojure, for further self-study/exploration.
- Learn how Clojurists usually think with Clojure to solve problems.
- See how it's not so hard to do surprisingly powerful things with a mere handful of "primitive" functions, data structures, and ideas.
- Try to explain Functional Programming theory or Clojure's innards. (Many free and paid tutorials and books do so very well.)
- Try to exhaustively cover Clojure primitives/features. (That's homework!)
- Devolve into language wars, editor wars, syntax wars, type wars... (Life's too short, people.)
- Focus too much on tooling or operational things. (At least not while there's fun to be had!)
How to approach this workshop
Think of this as an exercise in constrained creativity.
- Ignore details, achieve much with as little know-how as possible.
- Focus on what things do; not what they are, or why they are.
- Inform your intuition for doing things, and then use that to dive deeper into all the juicy details at your own pace, later.
- Take what is useful, discard the rest.
Almost anyone can hope to do more with more. Up to a point, that is.
Far too often, we end up doing less with more; bogged down by the complexity of too much choice.
Figuring out how to do more with less feeds our curiosity, and often satisfies and empowers us.
So, may you stay small and achieve important things.
Basics of Clojure
- Numerics, Symbols, Keywords, Vars, Booleans, Bindings
- Using the REPL
Solving problems the functional way
- Immutability and persistent data structures
- Higher-order functions
- Thinking in map, filter and reduce
- Java interop
You will need Java to work with Clojure. Run
java -version in your terminal. If Java is not installed, please download and install it from
Once you are done,
java -version should show you a Java 1.8.x version.
Note: Java 9 is known to have issues with Light Table, the editor that we recommend for the workshop, and with some versions of certain Clojure libraries.
Leiningen is a Clojure command line tool used to manage projects. To install it, follow the instructions
here. After installation,
lein version should print both the Leiningen version and the Java version.
LightTable is one of many Clojure editors. There are setups possible with vim, emacs and more, but for the workshop we will only support Light Table officially.
Please download and install LightTable from here. Note that on Mac OS, you may have to allow running the app in your security preferences to be able to open it.
Once LightTable is installed, open it and go to View -> Plugin Manager and search for "parinfer". Install the Parinfer plugin by Maurício Szabo. Parinfer is an editing system for Clojure that makes it easy for you to move Clojure code around without unbalancing parentheses. Although we'll have a small introductory session on Parinfer at the workshop, we also recommend going through the Parinfer documentation here.
Questions? Contact us!
If you have any questions about the workshop, or you're having problems with the setup instructions, feel free to drop us an e-mail at email@example.com!