On Sat, Sep 03, 2005 at 11:45:33 +0300, Yuval Kogman wrote a lot. I'd like to summarize:
* if operators are not special than they are defined in perl 6
(maybe)
* if operators are defined in terms of other operators, then
overriding an operator may interfere with the definition of
another operator.
* if all operators are defined in terms of each other, perl 6 is
circular. At some point the loop must be broken, and
functionality has to be delegated to the runtime.
* one way to do this is to infer where operators are not
overridden
* each "builtin" code may have an alternative version in the
native runtime's language
* if a bit of code is kown, by inferrence, to be completely
unaltered, the native could is used instead.
* essentially the role of inferrencing here is to determine
where, and to what extent may the circularity be broken.
* functions which must have a runtime counterpart (like IO) are
defined as stubs. They can be overridden for emulation purposes,
or die as "not yet implemented" when the runtime can't provide a
native version.
This is possibly slow to compile, and possibly dangerous to allow.
I think that the best solution is to allow overriding builtins only
in the current lexical scope, unless this circularity is explicitly
asked for.
--
() Yuval Kogman <[EMAIL PROTECTED]> 0xEBD27418 perl hacker &
/\ kung foo master: /me whallops greyface with a fnord: neeyah!!!!!!!
pgpNHHeJGtg0P.pgp
Description: PGP signature
