I think you could also add some metadata to allow datafy-ing instead of extending the protocol:
(with-meta {:name "John Doe" :language "us"} {`clojure.core.protocols/datafy (fn [x] ...)}) On Thursday, January 30, 2020 at 10:28:20 AM UTC-8, Jim foo.bar wrote: > > Moreover, following the mailing discussion linked from the clojure.org > site, leads to the following quote from Rich - about 10 years ago :) > > *If a protocol comes with Clojure itself, avoid extending it to types * > *you don't own, especially e.g. java.lang.String and other core Java * > *interfaces. Rest assured if a protocol should extend to it, it will, * > *else lobby for it. * > > > > On 30/01/2020 17:58, dimitris wrote: > > Well, the official Clojure guidelines are to NOT extend protocols, unless > you own either the protocol of the type(s) [1]. > > In particular these lines: > > *If you are a library developer, you should not extend if you own neither > the protocol nor the target.* > > *You should take particular care when extending protocols included with > Clojure itself.* > > > Kind regards, > > Dimitris > > [1]: https://clojure.org/reference/protocols#_extend_via_metadata > > > On 30/01/2020 17:50, Sean Corfield wrote: > > Is there a reason you’ve mirrored those protocols/implementations rather > than just use Clojure’s built-in versions? > > > > As it stands, your library wouldn’t work with other tooling that builds on > Clojure’s datafy/nav (REBL, for example). > > > > Sean Corfield -- (904) 302-SEAN > An Architect's View -- http://corfield.org/ > > "If you're not annoying somebody, you're not really alive." > -- Margaret Atwood > > > > *From: *dimitris <javascript:> > *Sent: *Thursday, January 30, 2020 9:05 AM > *To: *Clojure <javascript:> > *Subject: *Feedback on datafy/nav project > > > > Hi folks, > > > > I'm looking for honest and constructive feedback on [1] - not so much > > about the actual implementation (even though these are welcome too), but > > rather about the general idea of basing everything on top of (mirrored > > versions) `datafy` and `nav` (in this way). There is a TL;DR section at > > the very bottom that describes the approach in 4 short sentences. > > > > Many thanks in advance, > > > > Dimitris > > > > [1]: https://github.com/jimpil/jedi-time > > > > > > -- > > You received this message because you are subscribed to the Google > > Groups "Clojure" group. > > To post to this group, send email to clo...@googlegroups.com <javascript:> > > Note that posts from new members are moderated - please be patient with > your first post. > > To unsubscribe from this group, send email to > > clo...@googlegroups.com <javascript:> > > For more options, visit this group at > > http://groups.google.com/group/clojure?hl=en > > --- > > You received this message because you are subscribed to the Google Groups > "Clojure" group. > > To unsubscribe from this group and stop receiving emails from it, send an > email to clo...@googlegroups.com <javascript:>. > > To view this discussion on the web visit > https://groups.google.com/d/msgid/clojure/d0db9e09-6419-2e13-3a0b-9bacf2bbf4fd%40gmail.com > . > > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clo...@googlegroups.com <javascript:> > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clo...@googlegroups.com <javascript:> > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clo...@googlegroups.com <javascript:>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/clojure/5e331755.1c69fb81.ff1ad.21cf%40mx.google.com > > <https://groups.google.com/d/msgid/clojure/5e331755.1c69fb81.ff1ad.21cf%40mx.google.com?utm_medium=email&utm_source=footer> > . > > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/a0a471ae-c4c6-4b92-86a6-5cefe099bdd7%40googlegroups.com.