On Thu, 4 Mar 2004 [EMAIL PROTECTED] wrote:
> Accepting 'undef' in a map operation is ok, but a Set cannot contain
> 'undef' !
The problem is that if the callback is called in a scalar context, and it
does a bare return, like this:
$set->iterate( sub { return } )
then that "return" returns an undef. In fact, I think you don't even need
a bare return. Simply following off the end of the subroutine would do
the trick:
sub foo { if ( $_[0] > $x ) { ... } }
so if \&foo were the callback, and the argument wasn't greater than $x,
then it would return undef!
> So we only have two options if we get an undef: to die, or to discard
> the value.
I think we need to die and provide a different way to remove elements,
probably a separate method.
> > just to avoid the effect. I think if you want to be able to modify
> > the set, you should provide different methods for that. ->map and
> > ->grep come to mind.
>
> People are already confused with lists vs. sets.
>
> I think using map and grep would lead them to think sets _are_ lists.
True, but the map/grep analogue would make the functionality obvious. How
about set_grep() and set_map()?
-dave
/*=======================
House Absolute Consulting
www.houseabsolute.com
=======================*/