タグ

closureに関するmatsutakegohan1のブックマーク (5)

  • naoyaのはてなダイアリー - Perl のクロージャ

    いつもお世話になってるあの人とかあの人とかが山口家の逆襲->perl-解説->クロージャというクロージャの解説ページをブックマークしてるのをきっかけに、 Perl のクロージャについて自分もちゃんと理解できてるのかというのを考えてみましたが、どうも微妙です。 クロージャについて、何でいまいち理解しきれてない感じがあるのかというと、クロージャがどういうものであるかは知ってるけど、クロージャをどういう時に使うと良いのかが具体的にあれとこれという感じで思い付かないからなのではないかと思った。 なので、Perl でクロージャを使ってる実装とかを見て、どんなときに使われるものなのかをリストアップして理解を深めてみよう..のコーナーです。 クラスにデータを保持するためのクロージャ 僕がぱっと思いついたのは Class::DBI の中で使われている Ima::DBI におけるデータベースハンドラのキャッ

    naoyaのはてなダイアリー - Perl のクロージャ
  • XML を Perl の高階関数で。 : torus solutions!

    XML::LibXML で XML を作るときに、 いちいち createElement とか appendChild とか書くのに飽きてきたので、 高階関数版を作ってみた。 (2005/4/27:テキストノードを追加する機能を付け足して、説明も書き足しました。) 前置き Perl でクロージャを作ってプログラミングするのが好きですというと、 Perl でクロージャなんかかけるの? という顔をする人がたまにいるんですが、 もちろんかけます。 『Higher-order Perl: A Guide To Program Transformation』 というが出ているくらいだし。 例 my $dom = (_DOM (_E fuga => {a1 => "attr1", a2 => "attr2"}, (_E hoge => {}, "Hahaha!"), (_E "piyo"))); こ

  • クロージャによるOOP - Tociyuki::Diary

    ふと思いついて試してみたのですが、Perlでもクロージャを使ったOOPを扱えるみたいです。たぶん既出なのだろうと思いますが、見つけきれなかったのでエントリーを打ってみます。 例1. UP/DOWNカウンタ sub Counter::new { my $this = {}; $this->{class} = shift; my( $value, $step ) = ( 0, 1 ); $this->{step} = sub { $step = shift if @_ > 0; $step }; $this->{value} = sub { $value = shift if @_ > 0; $value }; $this->{up} = sub { $value += $step }; $this; } my $c1 = Counter->new(); $c1->{value}->(10);

    クロージャによるOOP - Tociyuki::Diary
  • ハタさんのブログ(復刻版) : javascriptを初めて学ぶ人についてのおさらい。その1

    僕にも教える人ができた(? というか人にモノを教える立場)になったので、とりあえず、最近はもっぱらjavascriptを教えています。 もともとCやJavaなどについてはある程度の知識がある人なので、それを少しjs的な意味で、関数言語的な教えをやっている最中のメモ 変数って何ですか?変数って値もしくは式そのものに利便的な名前をつけているものです 次のhogeとfooは値をいれる箱ではなく、値そのものに別名(もしくは分かりやすい名称)を割り当てているだけに過ぎませんよ。 var hoge = 1; var foo = [1, 2, 3]; alert(hoge + 1); // 2 alert(foo[0]); // 1 alert(1 + 1); // 2 alert([1, 2, 3][0]); // 1 つまり、関数自体を変数に代入する事ができます。(functionとは特別な呼び名

  • javascript vs perl - プライベート変数による初期化 : 404 Blog Not Found

    2007年12月15日20:00 カテゴリLightweight Languages javascript vs perl - プライベート変数による初期化 はてブを見ると、「これ、ほんとに差が出るの?」と思っている方も結構いらっしゃるようなので。 Life is beautiful: Javascript、クロージャを使ったプライベート関数の隠蔽について 「うーん、マッピングのためのオブジェクトを毎回作り直しているところかな。」 以下、10000回実行した結果をミリ秒で表示します。ここで_nがnaiveな実装、_cがクロージャーを使って変数初期化を一度で済ませている例です。疑っている方はソースをご覧下さい。 プログラム: p(benchthis(10000, code2name_n, 'ja' )); p(benchthis(10000, code2name_c, 'ja' )); 出力

    javascript vs perl - プライベート変数による初期化 : 404 Blog Not Found
  • 1