Trey Harris wrote: > Yes. This is my fear of hyperoperation being the default for normal > aggregates. Loops--and large, multiply-nested, potentially-infinite > ones--can spring out of code that doesn't look loopy at all. Erm... you > know what I mean. :-) > > Karl, do you have any objection to marking aggregates for which > hyperoperation is to be the default? Then you could say: > > my <mumble> @foo, @bar; # Are the parens required in p6? > # or > my (@foo, @bar) is <mumble>; # Can you distribute properties? > <...> > @foo += @bar; > > where <mumble> is matrix, hyper, or something along those lines (choosing > great names is Larry, Damian and Allison's jobs, not mine :-) > > If we simply made such hyperoperated aggregates builtins rather than > requiring user-defined classes, this would offer a compromise, would it > not?
This is a good compromise. The numerics person might even be able to say: use default => hyperops; # somewhere at the top of your script @res = @foo * sqrt(@bar); while brent and others can do their CGI scripts without having to wait for the end of the known Perl universe.