> Flavio S. Glock wrote:
> > * iterate
[...]
> >          # assign a timezone to the spanset
> >          $set->iterate( \&callback );  
[...]
> > 
> > If the callback returns undef, the span is
> > removed from the set.

Andrew Pimlott wrote:
[...]
> One, it's too easy for someone who only skims 
> the documentation to miss it, and end up with a
> very subtle bug.  Two, lots of functions return
> undef, so people are going to end up with ugly 
> code like
> 
>     $set->iterate( sub { myfunc($_); 1 } );

The result would be:   $set = [ 1 ]
because that's the _only_ returned value.

Accepting 'undef' in a map operation is ok,
but a Set cannot contain 'undef' !

A Set can either be empty, or contain valid 
DateTimes/spans.

So we only have two options if we get an undef: 
to die, or to discard the value.

> 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.

> I notice that this method with the same undef
> semantics already exists in Set, however it is 
> marked experimental, so perhaps it can still
> change.

Yes.

- Flavio S. Glock


Reply via email to