Clojure comp, partial, juxt & complement — Composition & Partial | Episode 17
0views
C
CelesteAI
Description
Clojure gives you a handful of tiny functions for building bigger functions — comp, partial, juxt, and complement. Learn them once and you'll reach for them every day.
In this episode we cover comp to compose functions right-to-left, partial to pre-fill arguments, juxt to apply many functions to one input, and complement to flip any predicate. Then we glue them together into a small data-cleaning pipeline.
Phase 3 continues — the Functional Core!
Student code: https://github.com/GoCelesteAI/clojure-for-beginners/tree/main/episode17
Every keystroke is shown on screen with generous pauses so you can follow along at your own pace.
What You'll Learn:
- comp — compose functions right-to-left
- partial — pre-fill the first arguments of a function
- juxt — apply many functions to one input, collect results in a vector
- complement — flip any predicate to its opposite
- Point-free pipelines — build out of small, named pieces
Timestamps:
0:00 - Intro
0:12 - Preview: comp, partial, juxt, complement
0:32 - Start the REPL
0:40 - comp in the REPL
0:54 - partial in the REPL
1:08 - juxt in the REPL
1:24 - complement in the REPL
1:38 - Exit REPL
1:43 - Write composition.clj in Neovim
2:05 - comp section
3:18 - partial section
4:35 - juxt section
5:59 - complement section
6:55 - clean-name pipeline
8:12 - Partial + map prefix tag
8:56 - Run with :!clj -M %
9:00 - Output walked through
9:55 - Review
10:00 - Recap
10:35 - What's next: Episode 18
Key Takeaways:
1. comp composes functions right-to-left. (comp f g) is the same as #(f (g %)).
2. partial pre-fills the first arguments — perfect for passing "specialized" fns to map.
3. juxt applies many fns to one input and returns a vector of the results.
4. complement flips any predicate. Pair with filter, remove, drop-while, etc.
Phase 3 continues! Next up, Episode 18 — transducers, for performance-friendly pipelines without intermediate collections.
Taught by CelesteAI. Like and subscribe for more Clojure tutorials!