Michael Lazzaro wrote:

After reading that appendix, I'm still a bit murky on the final decisions as to which of these edge cases will be allowed:

         my @out <== (1,2,3);
         my @out <== (my @in = foo());
         my @out <== foo();

         (1,2,3) ==> my @out;
(my @in = foo()) ==> my @out;
           foo() ==> my @out;

These are basically all just two edge-cases. Namely:


        @var <== LIST
and:
        LIST ==> @var

Larry is still leery, but I suspect they will ultimately be allowed.
Mainly because these:

      @in ==> map  {...}
          ==> sort {...}
          ==> map  {...}
          ==> @out;

     @out <== map  {...}
          <== sort {...}
          <== map  {...}
          <== @in;

are much less annoying than:

      @in ==> map  {...}
          ==> sort {...}
          ==> map  {...}
          ==> push @out;

     push @out <== map  {...}
               <== sort {...}
               <== map  {...}
               <== @in;

And because, as I demonstrated, the necessary overloaded multimethods are so trivial to implement.

Damian



Reply via email to