This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-12-01
Channels
- # adventofcode (93)
- # announcements (44)
- # asami (23)
- # aws (1)
- # babashka (48)
- # beginners (112)
- # calva (26)
- # cider (57)
- # clj-kondo (17)
- # cljfx (5)
- # cljs-dev (21)
- # clojure (124)
- # clojure-europe (19)
- # clojure-hungary (40)
- # clojure-nl (3)
- # clojure-spec (7)
- # clojure-uk (3)
- # clojurescript (3)
- # cursive (81)
- # datalog (11)
- # events (21)
- # exercism (1)
- # fulcro (37)
- # graalvm (1)
- # introduce-yourself (8)
- # jobs (1)
- # lsp (1)
- # malli (5)
- # membrane-term (17)
- # minecraft (3)
- # nextjournal (5)
- # off-topic (14)
- # other-lisps (14)
- # polylith (58)
- # reagent (16)
- # reclojure (3)
- # reitit (6)
- # remote-jobs (1)
- # shadow-cljs (55)
- # spacemacs (15)
- # testing (2)
- # tools-build (7)
- # tools-deps (191)
As I understand it, Clojure does things in the background so that returning new data instead of changing mutable data in place isn't a big drag on performance and garbage collection. Do all lisps do this? Like can you work with Common Lisp or Racket in this way or am I incorrectly assuming similarities because they are also lisps? (disclaimer: have tried neither CL or Racket)
clojure's primary data structures are implemented as trees, for sharing the structure of the tree between versions of the data structure, which gives you immutable data structures with better performance than naive copy on write
a lot of other languages have libraries these days that provide similar data structures
Oh ok, thank you for the clarification. So basically Clojure was built to do this and other lisps may not be, although libraries could be available
there is a nice paper from the recent history of programming languages conference https://download.clojure.org/papers/clojure-hopl-iv-final.pdf
What I thought would be a simple matter of shopping for
best-of-breed functional data structures ended up being a search and engineering exercise that
dominated my early Clojure work, as evidenced by the gap in commits during the winter of 2006/7
(figure 2).
which is eventual what lead to him settling on hamts, created by, uh, Phil Bagwell I think
https://quickref.common-lisp.net/cl-hamt.html looks like a common lisp library, and https://docs.racket-lang.org/hamt/index.html is one for racket