Woo*_*ble 10
该List::Util
库包括reduce()
,它基本上做了什么fold
.
List::MoreUtils
包含一个zip()
功能.
两者都不是内置的,主要是因为Perl不是函数式编程语言.
我在我的模块List :: Gen中实现了许多这些函数(甚至是类似Haskell的函数)
use List::Gen qw(zip reduce);
my @list = zip [1 .. 4], ['a' .. 'd'];
my $str = reduce {$a . $b} @list;
say $str; # 1a2b3c4d
Run Code Online (Sandbox Code Playgroud)
或者使用glob
函数来构建范围:
use List::Gen 'glob';
say <1 .. 4>->zip(<a .. d>)->reduce('$a.$b'); # 1a2b3c4d
Run Code Online (Sandbox Code Playgroud)
使用->reduce('.')
或->reduce(sub {$a . $b})
也有效.
或者如果你打高尔夫球:
say <[.]>->(<1..4>|<a..d>);
Run Code Online (Sandbox Code Playgroud)
或者对于Haskell版本,请参阅List :: Gen :: Haskell