4

perlで「zip」「fold」「map」などの機能を使いたいです。(Haskell の場合と同様です。) map を見つけましたが、うまく機能します。では、ジップアンドフォールドはありますか?どうもありがとうございました。

4

4 に答える 4

10

List::Utilライブラリには が含まれており、reduce()これは本質的に何をするかをfold行います。

List::MoreUtils関数が含まれていzip()ます。

ほとんどの場合、Perl は関数型プログラミング言語ではないため、どちらも組み込みではありません。

于 2012-02-02T16:13:24.050 に答える
8

これらの関数の多く (および Haskell のような遅延関数も) をモジュールList::Genに実装しました。

use List::Gen qw(zip reduce);

my @list = zip [1 .. 4], ['a' .. 'd'];

my $str = reduce {$a . $b} @list;

say $str; # 1a2b3c4d

または、glob関数を使用して範囲を構築します。

use List::Gen 'glob';

say <1 .. 4>->zip(<a .. d>)->reduce('$a.$b'); # 1a2b3c4d

->reduce('.')orを使用する->reduce(sub {$a . $b})こともできます。

または、ゴルフをしている場合:

say <[.]>->(<1..4>|<a..d>);

または、Haskell のバージョンについては、List::Gen::Haskellを参照してください。

于 2012-02-02T16:44:07.497 に答える
5

Perl で関数型プログラミングの概念を使用することに興味がある場合は、Higher Order Perlを読むことを強くお勧めします。

于 2012-02-02T16:41:14.083 に答える
2

関数型プログラミング ツールを提供するモジュール:

(現在無料でダウンロードできる) 書籍Higher Order Perlにも興味があるかもしれません。

于 2012-02-02T21:04:06.133 に答える