On Wed, 2005-03-30 at 15:27 -0500, Aaron Sherman wrote:

> Like I said, if you allow run-time munging of the type interfaces, then
> you can't tell if this is valid or invalid:
> 
>       my X $a;
>       $a.m(1);
> 
> you have to allow it always, regardless of the definition of X. In fact,
> you can NEVER reject ANY method or function invocation based on
> signature, since it might change at run-time.
> 
> Is that really what you want?

I want the possibility to correct bad decisions of interfaces and
signatures whenever possible in the most minimally intrusive way
possible.  I don't want to work around a module or class or function or
method where someone tried to be helpful by saying "Oh, this will
absolutely never change, ever" and the compiler helpfully froze that
decision forever.  Sometimes that means changing it outside the
incorrect code.

I don't trust any compiler to make every decision correctly, and in
cases of ambiguity I believe that I can give it better hints than it can
reason for itself if I need the extra speed or safely.

A compiler that assumes incorrectly and disallows programmers to do
useful things because its holds those assumptions as precious is wrong
-- especially in cases where even the programmer can't tell if code is
valid or invalid until the program actually runs.

-- c

Reply via email to