Hi Dimitris. I think your library is an excellent idea. Like the other replies I'd prefer if it used Datafiable.
Would you consider adopting an explicit options map instead of the jdt/now! varags destructuring? I'm not sure if that style is adopted throughout, but in general I prefer maps to the syntactic sugar. Finally, just a suggestion that 'objectify' might be a bit more explicit in intent to 'undatafy'. I look forward to getting it in the REPL once it's up on clojars, thanks! On Saturday, 1 February 2020 08:50:31 UTC+11, Jim foo.bar wrote: > > Sean, > > I've already done that ;) > > I will publish to clojars either this weekend or the next - I just want to > add some more tests... > > > On 31/01/2020 21:34, Sean Corfield wrote: > > Dimitris, > > > > As a follow-up to Alex’s comments: if you change your lib to extend the > clojure.datafy version, I’ll almost certainly use your library 😊 > > > > 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: *Friday, January 31, 2020 1:23 PM > *To: *clo...@googlegroups.com <javascript:> > *Subject: *Re: Feedback on datafy/nav project > > > > Ok, thanks a million Alex > > > > On 31/01/2020 21:13, Alex Miller wrote: > > Datafiable is not special, the guidelines (recently refreshed with Rich's > input at https://clojure.org/reference/protocols#_guidelines_for_extension) > still make sense, but are still just guidelines for your thinking not Laws > whose breakage will land you in Clojure Jail. > > > > If you want to make protocol extensions for java time objects to > datafiable and put it in a lib, go for it. No one is making anyone else use > it. Maybe some day we'll do that in core, maybe not. > > > > I'm certain that copying Datafiable to your own version however would lead > only to a) confusion and b) a certainty that no one else would actually use > it, and that seems like a waste of time. > > > > > On Friday, January 31, 2020 at 1:24:09 PM UTC-6, Jim foo.bar wrote: > > I tend to agree with you in where the benefit is - it's just that the way > the protocol docs are phrased, and some of the language used in that > mailing discussion from 10 years ago (from authoritative sources like Rich > and Stuart), implies that *no library is to extend clojure.core protocols > to core Java objects*, and that only Clojure itself is allowed do that. > The example Stuart gave back then with the english/spelling-corrector VS > spanish/spelling-corrector is pretty telling... > > Could it perhaps be the case that `Datafiable` is somewhat special in > that, it was conceived for the purpose of open extension by third parties, > and that the protocol extension guidelines don't really apply to it (or > perhaps not as strictly)? > > > > Thanks for taking the time :) > > Dimitris > > > > On 31/01/2020 01:23, Sean Corfield wrote: > > If your library is intended specifically to provide the ability to > datafy/nav java.time objects then it is something optional that users can > choose to opt into. > > > > The section you meant to link to > https://clojure.org/reference/protocols#_guidelines_for_extension says: “To > minimize conflicts, consider these guidelines” > > > > So they’re a) guidelines and b) just given as a caution to minimize > conflicts. > > > > There are libraries out there already that exist specifically to give > users the option to extend protocols from one library (such as > clojure.java.jdbc or next.jdbc) to Java types to provide customized > behavior, above and beyond the “base versions for common targets” > mentioned in that section provided by the original library. > > > > I see benefit in libraries that extend Clojure’s datafy/nav to new domains > as a narrow purpose that users can opt into. I see much less benefit in > providing the same protocols and function names that core already includes, > targeted to new types, in an isolated way such as this. Perhaps that is > because I’m already using datafy/nav and I find their utility is enhanced > by being extended to other Java types? > > > > Yes, if multiple people write multiple libraries A, B, C that extend > datafy/nav to java.time types and then other libraries X, Y, Z start > pulling in those extenders, consumers of X, Y, Z can be in trouble. > > > > 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:58 AM > *To: *clo...@googlegroups.com <javascript:> > *Subject: *Re: Feedback on datafy/nav project > > > > 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 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/3caceeee-a3e9-4b74-bb86-870d3012fa5e%40gmail.com > > <https://groups.google.com/d/msgid/clojure/3caceeee-a3e9-4b74-bb86-870d3012fa5e%40gmail.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 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/5e33818b.1c69fb81.42724.5d42%40mx.google.com > > <https://groups.google.com/d/msgid/clojure/5e33818b.1c69fb81.42724.5d42%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 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/2a321799-425b-424e-afd1-b7071d38de1d%40googlegroups.com > > <https://groups.google.com/d/msgid/clojure/2a321799-425b-424e-afd1-b7071d38de1d%40googlegroups.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 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/1c378944-9c27-50d0-54d5-81f1d04411da%40gmail.com > > <https://groups.google.com/d/msgid/clojure/1c378944-9c27-50d0-54d5-81f1d04411da%40gmail.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 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/5e349d6a.1c69fb81.7e3ce.f725%40mx.google.com > > <https://groups.google.com/d/msgid/clojure/5e349d6a.1c69fb81.7e3ce.f725%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/e918a973-8db2-4261-90ae-9b1a6d3c973a%40googlegroups.com.