Hi, all. I've been following Parrot development and
been playing with Parrot for a...bout a year and a
half, now. First time posting to the list, though, so
forgive me if this has already been covered or is
stupid in some way :-)

Anyway, while playing around with IMCC, this kind of
bugged me:

P3 = 32   # tells the PMC referenced by P3 to
            set its value to 32
P3 = P5   # copies reference in P5 to P3

What I don't like about this is that it's not
immediately obvious from looking at the code whether
you're telling P3 to change its value or simply
replace the PMC reference stored in P3 with another.

As I understand it, this is how it works at
the assmbly level:

set Px, Iy    # alters the PMC referenced by Px
set Px, Py    # only copies a reference
assign Px, Py # alters the PMC referenced by Px

Whether you copy a reference or just tell the
referenced object to change itself depends
on the type of the operands. It would be less
confusing if you had to be explicit about what
you were doing:

assign Px, 3  # Tells Px to set its value to 3
set Px, 3     # Compile error. You can't
                set a PMC reference to an int! WTF?

Similarly, 
  set Sx, Ix
would barf on you, while
  assign Sx, Ix
would do what you want, and
  set Sx, Sy
would still be perfectly legal. And
  assign Ix, Iy
would throw a fit because you cannot really
'change' an integer, but only replace
it with another, and
  set Ix, Iy
would still be correct.

So: "set" would consistantly copy references,
while "assign" asks the object currently
referenced to change its value, somehow.

perhaps PASM's "set" <=> IMCC's "=", while
     PASM's "assign" <=> IMCC's "<=" or something :-P

Once again, sorry if this is dumb.

__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com

Reply via email to