The Common Lisp Object System (CLOS) supports multiple dispatch (multimethods). When is this a useful feature in practice? I'm not just looking for an example of hypothetical functionality that would be easier to implement with multiple dispatch[1]. I'm looking for examples of where it's useful in real software, for any value of real that means it would get written for something other than just an example.
[1] In programming tutorials, are examples contrived more often than not?
(plus float integer)
and `(plus integer float) seems a little unfortunate. For every pair of nonidentical numerical types you wanted to use, you would have to define two methods. One could just call the other, but you'd still have to write it. I suppose a macro could help with that. – Jul 26 '12 at 15:35