# [Python-ideas] Democratic multiple dispatch doomed to fail (probably)

Arnaud Delobelle arno at marooned.org.uk
Fri Dec 14 09:20:20 CET 2007

(Sorry I can't in-reply-to I've lost the original message)

Neil Toronto ntoronto at cs.byu.edu:

> While kicking around ideas for multiple dispatch, I came across one of
> Perl's implementations, and it reminded me of something Larry Wall said
> recently in his State of the Onion address about how types get together
> and democratically select a function to dispatch to. I immediately
> thought of Arrow's Theorem.

Maybe I'm wrong, but I don't think this theorem applies in the case of
mulitple dispatch.  The type of the argument sequence as a whole chooses
the best specialisation, it's not the case that each argument expresses a
preference.  The set of choices is the set S of signatures of
specialisations of the function (which is partially ordered), and the
'commitee' is made of one entity only: the function call's signature s.
To choose the relevant specialisation, look at:

{ t \in S | s <= t and \forall u \in S (s < u <= t) \implies  u = t }

If this set is a singleton { t } then the specialization with signature t
is the best fit for s, otherwise there is no best fit.

--
Arnaud