Clojure By Example: What could one do with just a bit of Clojure?
The goal is to introduce how a Clojure programmer would (typically) model things with pure data, design APIs, compose purely functional logic, and use the REPL to interactively "grow" and introspect code.
This demo-style workshop is for practising programmers and CS undergrads/grads (not absolute beginners).
Outline/Structure of the Workshop
We will progressively grow logic for a little data-processing utility, by building concept upon concept until we have a working application.
We will try to achieve this with a small set of core ideas, a handful of Clojure primitives, a few API design techniques, and an interactive (REPL-driven) programming workflow.
Fully-documented workshop material will be available for at-home use.
- 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.
- Understand how to truly leverage the REPL + 'liveness' of the Clojure development experience.
- Try to explain Functional Programming theory or Clojure's innards. (Many free and paid tutorials and books do so very well.)
- Try to fully 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!)
Suggested learning mindset:
- 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.
Practising programmers and CS students who are new to Clojure. Not for absolute beginners.
Prerequisites for Attendees
In-workshop, the only developer tools required are your brain, its peripherals, and paper and pencil.
If you choose to set up your computer to mess around with Clojure code, you may use:
- Java (8+)
- Leiningen https://leiningen.org/
- Editor (pick your poison)
- Intellij + Cursive
- Eclipse + Counterclockwise
- Emacs + Cider
- Vim + Vim fireplace (how-tos here, here, and here)
- Atom + Clojure
- VS Code + Clojure (options available here and here)
- ed + Clojure (ed is the standard text editor )
This workshop was taught at Lambda World, Seattle (2018).
It's derived from the original full-day workshop developed for IN/Clojure (2018).