[HN Gopher] Clojure on Fennel Part One: Persistent Data Structures
___________________________________________________________________
Clojure on Fennel Part One: Persistent Data Structures
Author : roxolotl
Score : 113 points
Date : 2026-04-07 02:09 UTC (3 days ago)
(HTM) web link (andreyor.st)
(TXT) w3m dump (andreyor.st)
| xeubie wrote:
| Clojure's immutable HAMTs are still a superpower nearly 20 years
| later. They've been copied in pretty much every language as a
| library (I did so myself in Zig) but what really makes it work
| well in Clojure is the fact that they're built into the language,
| so the entire ecosystem is built around them. Libraries that were
| made independently usually fit together like a glove because they
| are all just maps/vectors in -> maps/vectors out.
| dapperdrake wrote:
| I thought it cheesy at the time. Then I tried clojure.
|
| "The value of values". Indeed. Q.e.d. No notes.
| nesarkvechnep wrote:
| Lisp programmers know the value of everything and the cost of
| nothing.
| andersmurphy wrote:
| Apart from Andy Gavin [1]. He knows both the cost and the
| value of everything.
|
| [1]
| https://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
| jjtheblunt wrote:
| sbcl's optimizers knowing the cost of everything is the
| gamble, no?
| iLemming wrote:
| Yeah, they are so underappreciated - the practical differences
| in designing, delivering and maintaining software are real.
| Initially you see small differences "What's the point? I can
| write that in Python too... maybe it's not as delightful, but
| who cares?...", etc. Yet over time small annoyances accumulate
| and become an endless stream of headaches. I see it over and
| over again - I work on a team where we have codebases in
| different languages, and some services written in Clojure.
| Immutability by default is a game of a different league.
| packetlost wrote:
| Yeah. I do wish there was something that was like Clojure with
| a TypeScript or Go-like nominal typing, but I do feel myself
| missing types a lot less with Clojure compared to other
| languages.
| ux266478 wrote:
| Type annotations mix poorly with s-expressions imo. Try an
| ML, which answers the same question of "How do we represent
| the lambda calculus as a programming language?"
| packetlost wrote:
| There's already type annotations in Clojure and they look
| fine (though are a bit noisy). There are type algorithms
| that don't need annotations to provide strong static
| guarantees anyways, which is the important part (though I'm
| not sure you can do that with nominal types?). I think
| TypeScript and Go's syntaxes are a bad fit for s-expr but
| the idea probably isn't.
| slowmovintarget wrote:
| HAMT -> Hashed Array Mapped Trie for those wondering.
|
| https://en.wikipedia.org/wiki/Hash_array_mapped_trie
|
| (The acronym is expanded in the article, but a ways down.)
___________________________________________________________________
(page generated 2026-04-10 23:00 UTC)