人気ブログランキング | 話題のタグを見る
Perl の reduce (List::Util) で配列を作る方法
SICP の2.2.3節あたりを読んでいたら、思いついたのでメモ。

いままで reduce で配列を作る方法がいまいち分かってなかったんだけど、以下のようにすればいい。

例えば、1から3までの数字について、元の数字とその数字を2乗した数の対の配列を作る場合はこう。

my @array = 1 .. 3;
my $array_ref = reduce { [ @{$a}, [ $b, $b**2 ] ] }[], @array;
print YAML::Dump($array_ref);

実行結果

---
-
- 1
- 1
-
- 2
- 4
-
- 3
- 9

初期値に空の配列リファレンスを入れておいてやるのが(個人的な)ポイント。

Perl の(というより List::Util の)reduce は初期値を設定できなくて使いづらいと思ってたんだけど、ただ単に、配列の先頭に初期値を突っ込んでやればいいだけだった。コロンブスの卵。


参考サイト:
畳み込み関数の比較 (fold / accumulate / inject / reduce) - blanket sky
by fkmn | 2008-01-24 23:55 | IT
<< gauche.night のチ... Scheme-mode で C... >>


とあるWebアプリケーションエンジニアの日記

by fkmn
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

fkmnの最近読んだ本 フィードメーター - フッ君の日常 あわせて読みたい AX