Timothy, I probably haven't thought about this carefully enough yet, but why do you expect the return value to be ({:x {:y 1}} nil nil) in your test case?
Why not ({:x {:y 1}} {:x {}} nil) ? Andy On Fri, Feb 20, 2015 at 4:13 PM, Timothy Pratley <timothyprat...@gmail.com> wrote: > Alex/Rich, if a patch is welcome for this I am happy to raise a ticket and > submit. > > Test case: > (clojure.data/diff {:x {:y 1}} {:x {}}) > > Expected: > ({:x {:y 1}} nil nil) > > Actual: > ;; => ({:x {:y 1}} {:x nil} nil) > > Problem: > There is nothing only in the second input, so the second result should be > nil. > {:x nil} implies that there is a nil in the second input, which there is > not. > Furthermore the result cannot distinguish from > (clojure.data/diff {:x {:y 1}} {:x nil}) > Which should and does correctly return {:x nil} as the second result. > > Affects: > Empty collections in first or second argument > > Cause: > clojure.data/diff-associative-key > [(when (and in-a (or (not (nil? a*)) (not same))) {k a*}) > (when (and in-b (or (not (nil? b*)) (not same))) {k b*}) > (when same {k ab})] > should be > [(when (and in-a (or (not (nil? a*)) (and (not same) (nil? va)))) {k > a*}) > (when (and in-b (or (not (nil? b*)) (and (not same) (nil? vb)))) {k > b*}) > (when same {k ab})])) > > Why do I care?: > I use and maintain a modest library to send state changes from Clojure to > ClojureScript > https://github.com/timothypratley/patchin > In this context, handling empty collections/nils is desirable so the data > can be treated abstractly. > I have a workaround, so am not affected by the issue, just providing a > motivating example where knowing the difference is useful. > > > > Regards, > Timothy > > -- > 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. > For more options, visit https://groups.google.com/d/optout. > -- 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. For more options, visit https://groups.google.com/d/optout.