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
[PR]
by fkmn | 2008-01-24 23:55 | IT
<< gauche.night のチ... Scheme-mode で C... >>


とあるWebアプリケーションエンジニアの日記
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
カテゴリ
以前の記事
ブログパーツ
リンク
検索
タグ
最新のトラックバック
プログラミングが「出来る..
from とりあえず9JP?
Genographic ..
from ナンジャモンジャ
ジュセリーノ
from ありの出来事
くちこみブログ集(ライフ..
from くちこみブログ集(ライフ)(..
以降、丁寧語で行こう!
from エッセイ的な何か
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧

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