[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)