Mark A. Biggar writes:

> Austin Hastings wrote:
> 
> > Gaal Yahas wrote:
> > 
> > >   list [==] 0, 0, 1, 2, 2;
> > >       # bool::false?
> > >       # (bool::true, bool::true, bool::false, bool::false, bool::false) 
> > 
> >(And I'm with Smylers on this one: show me a useful example, please.)
> 
> Well the above example does tell you where the leading prefix of equal
> values stops, assuming the second answer.

But you still have to iterate through the list of C<bools> to get that
index -- so you may as well have just iterated through the input list
and examined the values till you found one that differed.

> Combined with reduce it gives some interesting results:
> 
> [+] list [?&] @bits  ==> index of first zero in bit vector

Yer what?  Are you seriously suggesting that as a sane way of finding
the first element of C<@bits> that contains a zero?  That doesn't even
short-cut (since the addition reduction can't know that once it starts
adding on zeros all the remaining values are also going to be zeros).

> There are other APLish operators that could be very useful in
> combination with reduce and scan:

The fact that there are more operators that go with these only adds to
my suspicion that this field of stuff is appropriate for a module, not
the core language.

> the bit vector form of grep (maybe called filter);
>       filter (1 0 0 1 0 1 1) (1 2 3 4 5 6 7 8) ==> (1 4 6 7)

Please don't!  The name 'filter' is far too useful to impose a meaning
as specific as this on it.

Smylers

Reply via email to