Matt Fowles wrote:

P5 is the new P2 Sam and Leo came to the conclusion that the current object should be passed in P5 as well as P2. Currently they are waiting for Dan... Nudge, Nudge...

<http://xrl.us/ef8r>

I've implemented this, but I am near the point of recanting. Examples of problematic code (both from t/pie/b3.t):


  return TT.__new__(cls, value)
  return T.__cmp__(a, b)

Where the latter ends up invoking the cmp method with three arguments instead of the customary two, and confusion reigns.

The way this is resolved in Python is with a distinction between "bound" and "unbound" methods. Roughly, in Parrot terms, this is a distinction between methods where the object can be found in P2 and P5 respectively.

I'm resisting implementing this for now, but will likely have to cave ultimately. To implement this would require a call to pmc_new on each method call on an instance, as well as reinserting the argument as the first parameter (shifting each of the curent parameters in the process). Blech.

- Sam Ruby

Reply via email to