Matthew Walton writes:
> Luke Palmer wrote:
> 
> >The remaining problem is what to do about unary dot.  Repeated here for
> >the, er, benefit? of p6l:
> >
> >    class Duple {
> >        has $.left;
> >        has $.right;
> >
> >        method perform (&oper) {
> >            &oper($.left);
> >            &oper($.right);
> >        }
> >    }
> >
> >Let's change that into a Tuple class:
> >
> >    class Tuple {
> >        has @.elems;
> >
> >        method perform (&oper) {
> >            for @.elems {
> >                .perform($_);
> >            }
> >        }
> >    }
> >
> >Can you find the mistake?
> 
> Well it's not using &oper on the elems anymore.

That's mostly because I really screwed up the example.  Mind, it was
very, very early in the morning when I wrote this.  Let's try again.
(This is a pretty trivial example, but the problem only gets worse as we
approach real life).

    class MyStream {
        has $.stream;

        method :send_one ($item) {
            $.stream.send($item);
        }

        method send ([EMAIL PROTECTED]) {
            .:send_one("BEGIN");
            for @data {
                .:send_one($_);
            }
            .:send_one("END");
        }
    }

Luke

Reply via email to