in reply to Re^2: Is there a more functional regex syntax?
in thread Is there a more functional regex syntax?

I have always shied away from List::Util ...

Personally, I think List::Util should be incorporated into the core; so often do I use it in my programs.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong

  • Comment on Re^3: Is there a more functional regex syntax?

Replies are listed 'Best First'.
Re^4: Is there a more functional regex syntax?
by tobyink (Canon) on Sep 18, 2012 at 19:18 UTC

    Some parts of List::Util are a little ill-conceived. For example, the existence of separate min and minstr functions (and max/maxstr). Perl gets by with a single sort function that can take an optional block. Obviously there is a limit to what can be done with prototypes, but if List::Util were to be adopted into the Perl language itself, I'd hope that would be addressed.

    But certainly, the functions in List::Util would be a lot more useful in core than getgrent, setnetent and getgrgid.

    I'd also add uniq from List::MoreUtils and about half of Scalar::Util.

    perl -E'sub Monkey::do{say$_,for@_,do{($monkey=[caller(0)]->[3])=~s{::}{ }and$monkey}}"Monkey say"->Monkey::do'
      Some parts of List::Util are a little ill-conceived. For example, the existence of separate min and minstr functions (and max/maxstr).

      Two points:

      1. All of List::Utils function except shuffle, can be reproduce using reduce alone.

        Adding uniq() would be nice if it ran more quickly than a pure perl implementation: sub uniq{ my %h; undef @h{ @_ }; keys %h }

      2. The need for min/minstr is forced by being non-core.

        min amd minstr run more quickly than their equivalents using reduce, because they avoid the need to callback to Perl for every item.

        Sort gets away with using a callback by recognising the simple patterns of callback block {$a<=>$b} & {$a cmp $b} and bypassing them in favour of dedicate opcodes for those simple cases.

        Effectively, sort{$a <=> $b } is the subroutine name. sortn would be shorter, easier to type and remember. Ditto for sorts

        List::Util doesn't have that option because it is outside the core.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong