This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-09-11
Channels
- # announcements (18)
- # beginners (57)
- # calva (20)
- # cider (4)
- # cljdoc (15)
- # cljs-dev (14)
- # clojure (124)
- # clojure-europe (5)
- # clojure-italy (5)
- # clojure-nl (10)
- # clojure-spec (4)
- # clojure-uk (44)
- # clojurescript (4)
- # clojutre (18)
- # clr (2)
- # cursive (25)
- # datomic (53)
- # emacs (18)
- # events (1)
- # figwheel-main (1)
- # fulcro (34)
- # joker (6)
- # kaocha (13)
- # nrepl (3)
- # nyc (24)
- # off-topic (1)
- # pathom (16)
- # protorepl (4)
- # re-frame (1)
- # reitit (27)
- # rewrite-clj (5)
- # shadow-cljs (38)
- # spacemacs (25)
- # sql (20)
- # vim (28)
- # xtdb (20)
A question about the kind of OO stuff that clj and cljs provide. In cljs, we have specify and specify! and not in clj. What’s the reason for this diff between cljs and clj?
Clojure often claims that “Concrete derivation is bad”
Does it mean that specify should be avoid?
Do you remember what features of cursor would be hard without generic proxying
A cursor wraps a particular instance of a data structure, but adds extra contracts (the root, it’s path in the data structure, protocols to transact against the mutable container that holds it)
for it to, at runtime, both behave/type like a normal collection (whatever type it is) and also have these extra things added, you need to delegate some interfaces related to cursoring and pass through unrelated ones you don’t know about. You can do this in Java with reflection (DynamicProxy I think); but in JS it’s faster and easier to adjust the prototype.
Thanks a lot for those clarifications