Here's a simplification of an exercise I was trying to write. We have a
two-level hierarchy of objects:
(derive ::starship ::thing)
(derive ::gaussjammer ::starship)
We have a generic function that uses both arguments:
(defmulti collide (fn [one two] [(type one) (type two)]))
We have these two specializations:
(defmethod collide [::starship ::starship] ...)
(defmethod collide [::gaussjammer ::thing]
Those are considered ambiguous in the face of:
(collide some-gaussjammer some-starship)
A `prefer-method` is required:
(prefer-method collide [::gaussjammer ::thing] [::starship ::starship])
Why? In what cases would a programmer prefer something like the second match?
-----
Brian Marick, Artisanal Labrador
Contract programming in Ruby and Clojure
Occasional consulting on Agile
Writing /Functional Programming for the Object-Oriented Programmer/:
https://leanpub.com/fp-oo
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en