Understanding Specter: Clojure's missing piece
Why Hacker News recommends it
Pointed to as a short, clear demonstration of how Specter simplifies manipulating complex nested data.
What it is
A screencast tutorial on Specter, a Clojure library for navigating and transforming nested data structures declaratively, demonstrated in a REPL.
Recommended by 1 HN commenters across 1 different months, 2017 to 2021.
What Hacker News said
Recommends yogthos · 2017-10 · on “Why I'm Productive in Clojure (2013)”
Explicit recursion is rarely used in FP, and it's often a code smell. It's almost always better to use higher order functions instead. The advantage is that you can implement a particular transformation once, check for edge cases, and reuse it from there on. You also end up with declarative code that talks about what it's doing without distracting your with implementation details. Clojure has a rich set of functions for manipulating data such as map, filter, reduce, and so on. There are also libraries such as Specter [LINK] that allow you to declaratively transform complex data. I highly recommend watching this [this video] short video to see how it works.
Cites Scarbutt · 2019-06 · on “Why GitHub used Haskell for Semantic”
(assoc-in foo ["bar" "alice" "bob"] 12) Of course, in clojure you mostly use :keywords instead "strings" as keys which has a ton of benefits. There's also specter if want something more powerful at the cost of an additional lib. [LINK] [this video]
Cites kgwxd · 2021-03 · on “Clojure from a Schemer's Perspective”
> You might just be using a completely different underlying data structure than expected, depending on which operations you've performed. I haven't had the pleasure of using Clojure in production, but I'm somewhat obsessed with the language and follow it fairly closely. Someone on r/Clojure[1] mentioned Specter[2] with a link to this video[3]. One of the first things the video covers is how the library deals with this concern. [1] [LINK] [2] [LINK] [3] [this video]