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.

Reply via email to