A related but slightly different issue: is prefer-method supposed to be
transitive?
That is, (prefer-method f a b) and (prefer-method f b c) implies
(prefer-method f a c)?
Here is a unit test that checks for transitivity (which fails in Clojure
1.8.0):
(test/deftest transitive
(derive
prefers(x,y) checks the ancestors of x, and returns true if any of them are
preferred to y --- which makes sense to me.
However, it also check the ancestors of y, and returns true if x is
preferred to any of them, which I don't understand.
Is that the intended behavior? Seems like it should