TOGoS:
# syntax. As it is, the add(ints) op and the
# add(pmcs) ops do very different things (one
# has 'set' while the other has 'assign' semantics),
# but they look exactly the same. If not at

I think that's mostly because there's no difference between set
semantics and assign semantics for ints.  You can think of them as both
having assign semantics, if you like. 

# I sense the 'only people who really know
# what they're doing wil use this interface,
# anyway, so we don't have to make it nice'
# attitude in a few other places... most
# notably the Windows API.

You don't have to lecture me on the Windows API--I use Windows, and I
have the scars to prove it.  ;^)  But in this case, we're doing it
because:

        a. It speeds things up.
        b. It avoids a very difficult DWIM.
        c. It simplifies the syntax.

Sure, you don't need to use 'new' on an I register, while you do on a P
register--but you *never* need to use 'new' on an I, if memory serves.
So that's a consistent...uh...inconsistency between I and P registers.

# But aside from all that, I still think
# that the set semantics for add, etc. would
# make a lot of sense in many cases, because
# the PMC that is being addded will know
# how best to return.

The thing is, the target PMC needs a way to react to the fact that it's
being assigned to.  The real semantics we want are something like:

        assign $P0, (add $P1, $P2)

(Assuming that ops behaved that way...)

I don't think any vtable ops actually allocate new PMCs and return
them--to my knowledge, they always operate on a target PMC.  I believe
that this is done for speed reasons, although I'm not sure about
that--after all, it's much cheaper to allocate target PMCs only when you
need them than to allocate them when you don't.

--Brent Dax <[EMAIL PROTECTED]>
Perl and Parrot hacker
 
"Yeah, and my underwear is flame-retardant--that doesn't mean I'm gonna
set myself on fire to prove it."

Reply via email to