Clojure in a nutshell by James Trunk

December 9, 2020

James Trunk introduces Clojure as a language that separates data from functionality, prioritizing data as a first-class citizen. He discusses the core data structures in Clojure and the advantages of immutability. James also explains how Clojure differs from other languages by making data structures a core part of the language. He demonstrates the “threadlast” macro for a more natural reading of code and highlights Clojure’s dynamic and data-driven nature. James showcases examples of data analysis and manipulation using Clojure’s functions and introduces the concept of a REPL for real-time code manipulation. He concludes by creating a custom function in Clojure and emphasizing the simplicity and conciseness of Clojure code.

Clojure in a nutshell: A Comprehensive overview

In his enlightening presentation on Clojure, James Trunk takes us on a journey through the unique features and principles that distinguish this Lisp dialect. In this overview, we’ll delve into the key insights shared by James , exploring Clojure’s emphasis on separating data from functionality, its core data structures, immutability, and its dynamic nature. James’ demonstration of real-time code manipulation through Clojure’s REPL and the creation of custom functions encapsulates the essence of Clojure’s simplicity and power.


Separating data from functionality

James begins by introducing Clojure as a language that elevates data to a first-class citizen, emphasizing the importance of untangling ideas. He discusses how Clojure promotes the use of pure functions that operate on data, contrasting it with object-oriented programming paradigms.


Core data structures and immutability

Clojure’s core data structures – lists, vectors, maps, and sets – are explored in detail, showcasing their syntax and immutable nature. James illustrates how immutability ensures stability and scalability in Clojure programs, revolutionizing the approach to data-oriented programming.


Data structures as a core language feature

James highlights Clojure’s unique approach of integrating data structures as a core language feature from the outset, in contrast to other languages where they are often treated as add-ons. This design philosophy simplifies code and fundamentally alters the way developers conceptualize and build systems.


Threadlast macro and dynamic nature

The “threadlast” macro is introduced as a tool for enhancing code readability, facilitating a natural left-to-right flow. James also discusses Clojure’s dynamic and data-driven nature, exemplifying its utility through text analysis examples.


Real-time code manipulation with REPL

James demonstrates Clojure’s real-time code manipulation capabilities using the REPL. Through examples like finding the longest words and palindromes in a text, he showcases the flexibility and ease of data analysis and manipulation in Clojure.


Creating custom functions

The presentation culminates with James creating a custom function, “longest palindrome,” illustrating Clojure’s simplicity and conciseness. The function’s clarity and effectiveness exemplify Clojure’s elegance in problem-solving.



James Trunk’s exploration of Clojure leaves us with a deep appreciation for its unique design principles and powerful capabilities. Clojure’s emphasis on data, immutability, simplicity, and real-time code manipulation through the REPL make it a compelling choice for modern software development. As we reflect on Trunk’s insights, we’re inspired to delve further into Clojure’s world and unlock its full potential in our projects.


Additional resources

Check out more from the MeetUp Func Prog Sweden. Func Prog Sweden is the community for anyone interested in functional programming. At the MeetUps the community explore different functional languages like Erlang, Elixir, Haskell, Scala, Clojure, OCaml, F# and more.