Recursing? hypers

0 views
Skip to first unread message

Juerd

unread,
Oct 8, 2006, 10:07:37 AM10/8/06
to perl6-l...@perl.org
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.

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.

Audrey agreed.

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.
--
korajn salutojn,

juerd waalboer: perl hacker <ju...@juerd.nl> <http://juerd.nl/sig>
convolution: ict solutions and consultancy <sa...@convolution.nl>

Ik vertrouw stemcomputers niet.
Zie <http://www.wijvertrouwenstemcomputersniet.nl/>.

Larry Wall

unread,
Oct 10, 2006, 3:55:27 PM10/10/06
to perl6-l...@perl.org
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 all
Reply to author
Forward
0 new messages