On Sun, Oct 08, 2006 at 04:07:37PM +0200, Juerd wrote:
: S03 says that hypers recurse into subarrays. 
: 
: That's a nice and useful feature, but that not-recursing is even more
: useful. Especially given that many objects will probably does Array, you
: want to be explicit about recursion.
: 
: S03 doesn't give a way to avoid recursion.

Recursion is not really the issue here.  Conformancy is, I think.

: I suggested on #perl6 that standard hypers do not recurse, and a new
: operator: double hypers. These are the same, but they do recurse. From
: my point of view, hypers should operate on lists, not arrays. Recursive
: hypers would work on arrays because arrays are single element lists.

See the latest S03 changes.  Standard hypers now require conformancy,
and I introduced small-ended hypers (whimpers?) to ask for dwimmery.

: Audrey agreed.

Audrey is very agreeable. :)

: It would probably be useful to allow combinations of recursive and
: non-recursive hypers.
: 
:     »+«    # do not dive into arrays
:     »»+««  # do dive into arrays, on both sides
:     »+««   # dive into arrays only on the RHS
:     »»+«   # same, but LHS
: 
:     42, 15 »+ 1       # 43, 16
:     
:     ( 42, 15 ) »+ 1   # 43, 16
:     
:     [ 42, 15 ] »+ 1   # 2
:     
:     [ 42, 15 ] »»+ 1  # [ 43, 16 ]
: 
: The ASCII variant is a bit big, but that's okay huffmanwise, IMO.
: Recursion can be a pretty big operation anyway. Being explicit about
: that is good.

I think the current S03 solution is a lot prettier, and keeps most of
the symmetry of the old hyper solution, while visually indicating the
"smaller" argument:

    @foo »+» 1

For the old symmetrically dwimmy infix hyper behavior you just write:

    @foo «+» @bar

Larry

Reply via email to