This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-01-02
Channels
- # announcements (1)
- # aws (5)
- # babashka (13)
- # beginners (202)
- # bristol-clojurians (3)
- # cider (16)
- # clojure (283)
- # clojure-dev (8)
- # clojure-finland (30)
- # clojure-italy (4)
- # clojure-nl (6)
- # clojure-spec (17)
- # clojure-survey (161)
- # clojure-sweden (7)
- # clojure-uk (62)
- # clojurescript (4)
- # core-async (31)
- # cursive (3)
- # datomic (7)
- # defnpodcast (1)
- # fulcro (8)
- # jobs (2)
- # lumo (2)
- # malli (2)
- # off-topic (24)
- # other-languages (1)
- # overtone (1)
- # re-frame (6)
- # remote-jobs (3)
- # shadow-cljs (6)
- # spacemacs (17)
- # tools-deps (20)
Is there some good write up somewhere of how reduce is internally implemented in Clojure? Or a summary at least of why there are interface IReduce, IReduceInit, and also CollReduce and InternalReduce? Even just a few sentences summarizing why these all exist might be clarifying.
CollReduce is the main protocol
IReduce/IReduceInit are Java interfaces that allow you to hook into the reduce protocol if you are directly implementing them
InternalReduce is implementation details
if you're writing a concrete Clojure thing, extend CollReduce. if you're writing some kind of low level Java thing like a data structure that you want to be reducible, implement IReduceInit at least, or IReduce if you want
Do you have an example of a concrete Clojure thing that should extend CollReduce, that is not some kind of low level Java thing? e.g. is a Clojure deftype class such a thing that should extend CollReduce?
things like custom map impls for example