From: Leopold Toetsch <[EMAIL PROTECTED]>
   Date: Sat, 30 Apr 2005 10:40:12 +0200

   Patrick R. Michaud <[EMAIL PROTECTED]> wrote:

   > I'd appreciate any gentle nudges towards the appropriate documentation,
   > source file, or answer.  Thanks!

   I've now created a test for it in t/pmc/object-meths.t:

     .sub go method
         ...
         P2 = self
         tailcallmethod "go"
     .end

   Works. But that's not really optimal. Should the invocant be implicitely
   "self" . . .

Why limit method tailcalls to self?  Or to single dispatch?

   . . . and/or do we need a more general syntax:

     .pcc_begin
       .arg x
       ...
       .invocant o
       tailcallmethod "foo"
     .pcc_end

How about a unified ".pcc_tailcall" pseudo-op as an alternative to the
pcc_results production?  That should cover all of the pcc_call cases at
once.

   And maybe even

      foo(x, ...) @TAIL_CALL      # tail function call

      o.foo(x, ...) @TAIL_CALL    # tail method call

   > Pm

   leo

How about extending ".return" to cover these:

        .return foo(x, ...)         # tail function call

        .return o.foo(x, ...)       # tail method call

Otherwise, it may be easier to miss the fact that the call also does a
return.  (This is close to what I suggested in the "Returning varying
numbers of results from a tail call" thread of 22-Feb-05, but on
reflection I think it would be better not to introduce another
"dot-keyword.")

                                        -- Bob Rogers
                                           http://rgrjr.dyndns.org/

Reply via email to