On Tue, Jul 31, 2001 at 11:10:50PM +0300, Moshe Zadka wrote:
On Tue, 31 Jul 2001, Guido van Rossum
wrote:
Actually, this may not be as big a deal as I thought before. The PVM doesn't have a lot of knowledge about types built into its instruction set. It knows a bit about classes, lists, dicts, but not e.g. about ints and strings. The opcodes are mostly very abstract: BINARY_ADD etc.
PUSH "1" PUSH "2" BINARY_ADD
In Python that gives "12". In Perl that gives 3. Unless you suggest a PERL_BINARY_ADD and a PYTHON_BINARY_ADD, I don't see how you can around these things.
The Perl version of the compiled code could of course be
PUSH "1"
COERCE_INT
PUSH "2"
COERCE_INT
BINARY_ADD
for Perl's
"1" + "2"
and
PUSH "1"
PUSH "2"
BINARY_ADD
for it's
"1" . "2"
(or, in the case of variables instead of literals, an explicit
'COERCE_STRING' or whatever.)
--
Thomas Wouters