[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
More information about the Python-ideas
mailing list