This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-01-18
Channels
- # admin-announcements (90)
- # alda (1)
- # aws (23)
- # beginners (60)
- # boot (217)
- # cljs-dev (20)
- # cljsjs (23)
- # cljsrn (85)
- # clojars (28)
- # clojure (101)
- # clojure-art (1)
- # clojure-berlin (10)
- # clojure-dev (16)
- # clojure-my (2)
- # clojure-russia (194)
- # clojure-sg (7)
- # clojure-ukraine (1)
- # clojured (1)
- # clojurescript (99)
- # clojurex (1)
- # community-development (6)
- # core-matrix (11)
- # cursive (26)
- # datomic (51)
- # euroclojure (30)
- # hoplon (560)
- # jobs (44)
- # ldnclj (34)
- # mount (23)
- # music (3)
- # off-topic (10)
- # om (145)
- # onyx (3)
- # perun (38)
- # portland-or (2)
- # proton (55)
- # re-frame (64)
- # reagent (26)
- # ring-swagger (3)
- # spacemacs (21)
- # sydney (3)
- # yada (1)
FWIW it seems unfortunate that 'conj' is misnamed 'cons' in the Java source for IPersistentVector. Apart from the confusing naming, it means that you can't have a Clojure vector that also implements ISeq because the names clash but have different required semantics
@mikera: I don't think that's true. cons
is IPersistentCollection/cons
, backing all the conj
implementations
I seem to remember trying to make something that implemented both ISeq and IPersistentVector, and it broke a few things anyway....
I think the root cause of the problem was that anything implementing ISeq has to return another ISeq, but that doesn't work if you implement a vector which wants to return a different vector type (e.g. a small tuple overflowing to create a clojure.lang.PersistentVector)