in reply to RFC: Sub::Attributes -- alter subroutine context behavior with attributes

It doesn't delay creation of the list and undefined (or false) items in the list can break things like while (defined $result->next).

That's why you make your iterator return an empty list when you reach the end of its list and then test using while (my ($item) = $result->next).

While I like the concept, I'm not partial to the name. Sub::Context is not much better, though slightly more descriptive; I have very little idea what to expect by just seeing that name. Sub::ContextAware is very close, but I find it slightly misleading as well, so I propose Sub::ContextAwareness. It would be even better to work "Default" into the name somewhere, but that'd get unwieldly for not too much gain.

Makeshifts last the longest.

Replies are listed 'Best First'.
Re: Re: RFC: Sub::Attributes -- alter subroutine context behavior with attributes
by Anonymous Monk on Dec 10, 2003 at 05:18 UTC

    Sub::Context (by chromatic) exists on CPAN and does context sensitive dispatch; I think your suggestions would muddy the existing namespace. Since this is attribute based, and people are already aware of wantarray and probably Want, I'd suggest some variation of: Attribute::Want or Sub::Attribute::Want, or maybe using 'context': Attribute::Context.

      ++ to the idea of changing the name to put this in the Attribute:: hierarchy, which seems to be where other such packages have tended to end up. Perhaps Attribute::ArrayContext?
Re^2: RFC: Sub::Attributes -- alter subroutine context behavior with attributes
by Aristotle (Chancellor) on Dec 11, 2003 at 08:36 UTC
    Oops, I completely forgot to make my real point while arguing technicalia about the iterator. Indeed, I don't think the iterator attribute is very useful as is - I don't think I'd ever want to use the stock iterator provided. It should (at least optionally) take a package name parameter so that users can supply their own iterator classes.

    Makeshifts last the longest.