On 8/10/05, Autrijus Tang <[EMAIL PROTECTED]> wrote:
> But it's an toplevel optimization, which is not applicable to
> module authors. So I'd very much welcome a lexical pragma that
> forces static binding of subroutine calls.
Yeah, but the whole point of not allowing that is so that you can
override modules when you need to. However, I think the toplevel
closed requirement might be a little too harsh. After all, you could
just say:
use dynamic 'Foo';
Or something, to unforce that on a module's behalf. That declaration
should probably not load the module for you, so that you can force
dynamicity on modules that other modules use.
use dynamic;
Would force every module to be dynamic, and should probably only be
allowed at the top level.
In summary: You're allowed to say "I don't do funny stuff to myself",
and someone else is allowed to say "but I do funny stuff to you".
The only thing I see as problematic is a module that knows it's evil
and has to "use dynamic". The module could request that the user of
the module "use dynamic", so that people know when they're using a
module that will slow everything down. The other way is to hack
around it using something like a source filter, pretending that the
user of the module actually did write that. But that's not $&,
because it's quite a bit more difficult to do. If you encapsulate that
difficulty into a module, that module will eventually be shunned by
the speed-centric part of the community.
Luke