On 5/15/07, Phillip J. Eby <[EMAIL PROTECTED]> wrote: > At 09:43 PM 5/14/2007 -0700, Guido van Rossum wrote: > >On 5/14/07, Phillip J. Eby <[EMAIL PROTECTED]> wrote: > > > Or perhaps we could just say that if the main function is defined > > > with *args, we treat those arguments as positional? i.e.: > > > > > > @abstract > > > def range(*args): > > > """This just defines the signature; no implementation here""" > > > >That sounds about right. > > After thinking about the implementation some more, I believe it'll be > necessary to know *in advance* the maximum size of *args that will be > used by any subsequent overload, in order to both generate the > correct code for the main function (which must construct a fixed-size > lookup tuple containing special values for not-supplied arguments), > and the correct type tuples for individual overloads (which must > contain similar special values for the to-be-omitted arguments). > > So, if we could do something like this: > > @abstract > def range(*args:3): > ... > > then that would be best. I propose, therefore, that we require an > integer annotation on the *args to enable positional dispatching. > > If there are more *args at call time than this defined amount, only > methods that have more positional arguments (or a *args) will be selected. > > If the number is omitted (e.g. just *args with no annotation), the > *args will not be used for method selection. > > Still good?
Not so good; I expect the overloads could be written by different authors or at least at different times. Why can't you dynamically update the dispatcher when an overloading with more arguments comes along? -- --Guido van Rossum (home page: http://www.python.org/~guido/) _______________________________________________ Python-3000 mailing list [email protected] http://mail.python.org/mailman/listinfo/python-3000 Unsubscribe: http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com
