Hatena::ブログ(Diary)

日暮れて途遠し このページをアンテナに追加 RSSフィード

<ようこそ! 最初にお読みください。>
 告発、告訴の問題は、現在次のブログをメインにしています。
再審請求に向けて:http://hirono-hideki.cocolog-nifty.com/blog/

本日、金沢地方検察庁に電話連絡をしました。追って、エントリを書きます。
2008年1月21日

本日、金沢地方検察庁に電話連絡をしました。追って、エントリを書きます。
9月25日20時49分

 まだ書いていませんが、簡単にご報告しますと、今年度の新しい担当者のお名前は、「タカマツ」。たぶん、高松と書くのでしょう。当日不在ということで、 まだ声も聞いていないのですが、例の捜査官室長のような上司の人が、対応に出て、尋ねもしないのに、名前を教えてくれました。  とても変わった名前で、「戸澗(とま)」というそうです。  なお、この部分は、エントリに記載後、消去する予定のお知らせです。 10月4日23時31分


 ここ一ヶ月間のアクセス状況を公開しました。10分ほど前の記録になります。 2007年9月26日22時33分
2008年10月6日、金沢地方検察庁に電話連絡。応対したのは岸田さん。 2008年10月29日0時55分

2009-04-22 *1240394522*[裁判員制度]生活を邪魔する制度には断固として反対した

[]クロージャ関数テンプレートとして使う

参考書籍:プログラミングPerl 第3版 VOLUME 1 302頁

main[64]$ @colors=qw(red blue green yello orange);
red
blue
green
yello
orange
main[65]$ for my $name (@colors) \
 { no strict 'refs';  *$name = *{uc $name} = sub { "<font color='$name'>@_</font>" };}

main[66]$ &red("xxx xxxxx xxxxxxx");<font color='red'>xxx xxxxx xxxxxxx</font>
main[67]$ &BLUE("yyyy yyyy yyyyyy");
<font color='blue'>yyyy yyyy yyyyyy</font>
main[68]$

 クロージャとは、無名サブルーチンのことで、Emacs-Lispのlambdaの無名関数に相当するもののようです。Rubyでは、Emacs-Lispと同じlambdaという名前になっていたと思います。

 関数をサブルーチンととらえるあたりもperlの特徴かと思われますが、プロシンジャーと呼ぶようなプログラム言語もあり、値を返すか否かで、区別するものもあったと思います。ちなみにEmacsでは必ず最後に評価した値を返すみたいです。これは関数の返却値の場合と、明示的に指定した変数の場合があります。

 perlshを使って実行しました。perlshは、そのまま補完も出来るので便利ですが、改行を入れるとそのまま行内のコードを実行してしまいます。これは、端末(コマンドライン)でのシェルの挙動と同じですが、この振る舞いを抑えるため余計な\(バックスラッシュ)を入れてあります。

 ちなみに、Rubyでメジャーなirbは、改行を入れても適切に解釈してくれますが、補完機能を使うには別の設定が必要であったと思います。perlshはメジャーとは思えない機能で、インストールも少々面倒です。インストールと言うよりは、単体のファイルですが、パッケージのおまけのような存在になっており、tarで圧縮されたパッケージファイルから、抜き出して使うような感じです。

 その点、irbは独立したプログラムのような位置づけで、Linuxではapt-getなどでもインストールできます。

 このperlのクロージャを使うには、扱う変数をmy変数として宣言する必要があるそうです。なぜなら、グローバル変数はレキシカル変数のように、生成されたり破棄されたりしないから、とのことです。レキシカル変数はブロックを抜けるたびに破棄されるみたいですが実体は存在しているらしく、リファレンスを作っておけば、新たな呼び出しで、値が代入されない限り、有効にアクセスできるみたいです。

 理解に自信が持てないこともあり、説明がややこしくなっていますが、自分自身の覚え書きが主な目的なので、自己満足型の独り言みたいになっています。ややこしいので使うこともないかもしれませんが、クロージャを適切に使えば、コンパイル時間が短くなり、メモリも節約でき、構文チェックがコンパイル時に行われるのでエラーが起きにくくなると言う利点もあるそうです。

トラックバック - http://d.hatena.ne.jp/hirono_hideki/20090422/1240338477