perlで関数型言語(風)の処理 – 変数に関数を代入して実行。
JavaScriptとかで書いてて便利な無名関数。
perlでも出来たら何か便利かなぁ。
my $sub = sub {print @_, "\n";}; &$sub('Hello,world!'); #実行結果 Hello,world!
関数型言語って何がすごいんですか - Gemmaの日記
にあるJavaScriptの例をperlで書いてみる。
sub rocket{ my $n = shift; return sub { if ($n){ print $n,"\n"; $n--; } else{ print "liftoff\n"; } } } my $f = rocket(3); my $g = rocket(3); &$f(); &$f(); &$f(); &$f(); &$g(); &$g(); #実行結果 3 2 1 liftoff 3 2
ちょっと面白い。
リンク先のエントリーのコメント
これは関数型言語というより,クロージャのオブジェクト指向的使い方.
とある。純粋な関数型言語には出来ないらしい。例題としてはちょっとずれてるんじゃないの?との事。
ま、いっか。
2011-02-28追記
関数の実行はモダンな書き方だと以下の感じ?
# 両方同じ意味 &$f(); $f->();
-
前の記事
CentOS5.5にmod_fcgidをインストールする(Apache2.2+FastCGI) 2011.02.16
-
次の記事
jQueryで動的に追加したタグやid、classにイベントを登録したい時 2011.02.18