[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: the forward method [dynamic vs. static typing]



At 8:21 PM -0800 12/9/03, Chris Page wrote:
>On Dec 9, 2003, at 19:20, Ken Shan wrote:
>
>>On 2003-12-09T18:16:51-0800, Chris Page wrote:
>>>I don't see what this has to do with static or dynamic typing. It 
>>>has more to do with whether or not your language allows for some 
>>>type of polymorphism so you can use the same function/message 
>>>name, which is an orthogonal concern. Dylan, Lisp, Smalltalk and 
>>>C++ all allow for this.
>>
>>I don't know of any language said to be dynamically typed that 
>>allows for dispatch based on return type; do you?
>
>Dylan, Lisp, Smalltalk and C++. In the sense that a compiler can 
>look at the return type of a function A and use that to dispatch a 
>subsequent call to function B (when you pass the result of A to B).

This isn't what he's talking about. Using the return type as part of 
dispatching means that:

    int i;
    string j;
    i = foo();
    j = foo();

may call different versions of foo, if foo dispatches based on return 
type as well as (its nontexsitent, in this case) parameters.

There are a number of ambiguities in some cases that make it 
difficult to deal with. For example, if you have these definitions:

   int foo();
   string foo();
   bar(int);
   bar(string);

which foo gets called for:

    bar(foo());

? You could go either way. Or both ways if you want to implicitly 
fire off multiple threads in that case (you could make the result a 
quantum superposition of the calls and see which one it collapses to 
first, but I'd bet the maintenance programmer'd be the first to 
collapse there...)
-- 
                                         Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
dan@sidhe.org                         have teddy bears and even
                                       teddy bears get drunk