splitのLIMITパラメータ

splitにはlimitパラメータがあることをHOP読んでて知った。

$ $t = "a b c d e"
$ split /\ +/, $t 
a
b
c
d
e
$ split /\ +/, $t , 2
a
b c d e

splitっていろいろできんじゃん。

Catalyst::Model::LastFMがあると便利な気がする

自分のLastFMの週間チャートをとってきて、色々いじるのにCatalystのModelになっていれば便利かと。

Catalyst::Model::XML::Feedを使えばいいと考えていたけど、LastFMはFeedじゃないXML吐いてくるので自分でXML::Simpleとか使って書かなきゃならんですな。

あとWebService::LastFM::SimilarArtistsも併用すればモデルにアーチストの類似性検索使えるようになるのでさらによさげな予感。

やることリストにいれておく

これは何対策だろうか?

ダレにあてたメッセージなのかさっぱしわからん。

rss error

レスポンスコードじゃだめなのかなぁ。ただし、配信してない旨をRSSで配信するという微妙に矛盾した行為自体は言葉遊びとしてちょっと好き。

久々の薬漬け

揚げ物とか家ではほとんど食べないのにコレステロールが高いのがわからん。

結局ノルバスクとリポバスを飲むことになった、、、病人だ。

リポバスはあんま嬉しくないので運動しよう。

秋上がりが出始める今の時期に呑めないのはつらい、、、、

Bistro gawa でランチのコース

先週末もBistro gawaに行ってきた。ランチコース目当てで。いつものように写真撮りながら、美味しく頂いていたら、突然シェフの方から声をかけられて、パシャパシャしてるのがまずかったかなと思ったら、実は前回のパスタで揉めたヨ見られたそうでわざわざ説明してくださいました。そういうことだったのですねというわけで、追記しておきました。道理でボリュームがあって、旨かったわけですね。

あと載せる写真をひと言断っておけばよかったんですが、あまりにも突然だったのでタイミングを逃した。もし、まずかったら連絡ください。一番下にメールアドレスを載せておくことにしました。

前菜はエゾシカ?のサラダ。野菜美味い。エゾシカって臭みがないのね。馬ともまた違ったあじわい。スープは舞茸の冷製。これまた美味しかった。コースはこの流れなのがいいね。意外に前菜->スープで満足してしまう。で、メイン。

銀鮭のポシェ ナージュ仕立て

銀鮭のポシェ ナージュ仕立て

ナージュ仕立てってなんだろか?と思ったんだが帰ってきて調べてみるとナージュが泳ぐという意味で、まるで泳いでるようにスープたっぷりということなのね。前に頂いたときにも思ったけど野菜がおいしいですな。

デザートは美味しそうと頼んだ僕の葡萄のテリーヌだけど、結局二粒程度しか食べられなかった。残りは全部ユッキー様(娘)に捧げた。その時のやつは異常な食欲を見せた。

葡萄のテリーヌ

あまりにも悲しいのでU隊長の頼んだ、チョコのミルフィーユを少し分けてもらった。

ミルフィーユ

オレンジのソースと絡むチョコのまろやかな甘みとしっとりとした生地がやばすぎですな。

HOP再開

5章まで読んだけど、(たいして理解してなかったので)もう一度最初から読んでみる。

ProductName Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,678 (2005-05-30)
通常24時間以内に発送

prefaceにこの本はSICPにインスパイアされて書いたでよって書いてあった。

Bistro gawaでランチを食べた

うーん、期待以上だった。

それにしてもU隊長の嗅覚と、手際の良さには感心する。美味しそうなとこみっけたけどドウよ?ってサイト見ながら話してたら次の日には予約してあった。

gawa

昨日の夜に、コースにするかワンプレートにするか非常に悩んだが、食べるタイミングをそろえるということでワンプレートにすることにした。

が、やっぱメニューを見ると気持ちが揺らぐ。 が、当初の予定通りワンプレートランチで。

one-plate lunch black rice

今日の魚はサワラとのこと。美味いっていうよりは旨い感じのサワラ。ビシソワーズも旨かった。あと、サラダは美味しい。

ユッキー(娘)も黒米リゾットバクバク食べてた。

お子様パスタ

で、ユッキー用に頼んだお子様パスタがうますぎ。トマトソースのパスタなんだけど、なんか食感がいい粒々なやつが入ってんの。にんにくか玉葱なのかなとか思ったけど、わからんかった。あとのってるパセリが彩りっていうより苦味がいいアクセントになってて、パセリがあるとなしとじゃ大違いだよなと思わせる系。酸味と塩味のバランスが絶妙で僕が結構食べてしまったが、ユッキーも美味しそうに食べてた。

ところで、帰りにこのパスタをめぐってひと悶着あったわけだ。要するにお子様パスタに唐辛子が入ってることの是非についてなんだが。味のバランス考えたら唐辛子は少なくとも入ってなあかんやろというのが僕の意見なんだけど、U隊長(妻)は唐辛子の入ったパスタはサビ抜いてない寿司みたいなもんで子供用ではないと。彼女は辛いものに抵抗あるしそう思うのかなと思うんだけど次は注文する前に尋ねりゃいいじゃんってことで落ち着いた。

夜も子連れOKだったら、今度はグループで行きたいが、多分またランチ行くな。次はコース頂く。

07.09.02追記

後日このページを拝見されたシェフの方が説明してくださったのですが、パスタはお子様用の他に、ランチに追加という形も取れるようです(メニューに確かに書いてあった)。で、うちの子供がまだ小さかったので追加のほうとしてオーダーを受けたそうです(なので頂いたのはお子様パスタではなかったわけです。)。

私のほうでちゃんと子供用の注文だと確認すればよかったですね。というわけで訂正しておきます。

Gaucheのdisplayとprintって

Gaucheのdisplayとprintってperlのprintとsayと似たような関係なんだろうか?と思った。

perlでcall-with-procedure

参考にしたサイト

継続渡しスタイルに載ってたcall-with-procedureをperlで。

sub call_with_procedure {
  my ($exp,$proc) = @_;
  $proc->($exp);
}

sub fact {
  my $n = shift;
  $n == 1 ? 1 : $n * fact($n-1);
}

print call_with_procedure(sub {2 * $_[0]}, sub {$_[0]->(fact(10))});

実行すると

$ perl curpr.pl 
7257600

継続ってのはgaucheだと外に向いているようなものを内側にひっくり返す感があってなんか奇妙な感じがするが、いくつか書いてみてから継続の説明を読むと、なんかフムフム感が得られる。だけど、それをperlでやろうとするとひどく混乱するのはなぜだろうか?

sub {$_[0]->(fact(10))}->(sub {2 * $_[0]})
= {2 * $_[0]}->(fact(10))
= 2 * fact(10)

書き下してみるとこんな感じか、、、、

最初のsub{}->()ってコードはautoboxを使えば動きそうな気がするが、、、

実際にやってみることにした。

use autobox;
use autobox::Core;

sub fact {
  my $n = shift;
  $n == 1 ? 1 : $n * fact($n-1);
}

print sub {$_[0]->(fact(10))}->(sub {2 * $_[0]});

無名サブルーチンが第一引数に無名サブルーチンを取ってこれが引数にfact10の結果を取ってそれを二倍するっていう処理が実行される(はず)

$ perl abtest.pl 
7257600

動いた!

call/ccの勉強してたのに、キモコードを動かすというあらぬ方向に行ってしまったが、ファーストクラスオブジェクトってのがなんだかわかったようなわからんようなホンワカした何かを得た感があったのでよしとしよう。

perlの継続の謎のおまじないがやたらと気になる

継続ブーム到来中。なんでも継続読みましたよ、何度も何度も読みまくりなのでなんども継続

もちろんperlでもやってみたくなるので、なんでも継続、Perl で。とか継続は力なり読みながら手を動かしてみた。

が、perlだと、クロージャの中の

my $dummy = $cont; # なぜか必要みたい。

ってのが何故必要なのかわからないし、なんでそんなへんなのがそこにあるのかが、凄い気になるのでデバッガで追いかけた。

該当行を

#my $dummy = $cont; # なぜか必要みたい。

として perl -dで起動してみるといつまでたっても終わらない。なんか無限ループしてるっぽい。mとnの値がどんどんでかくなっていってるみたいだし、、、、。デバッガじゃなくて何が渡されてるのかprintしてみる。

 sub {
  my ($n) = @_;
  my $dummy = $cont; # なぜか必要みたい。
  print "n: $n\n";
  &leaf_count_cps ($tree->[1],
                sub {
                     my ($m) = @_;
                     print "m: $m\n";
                     $cont->($n + $m);
                    });
   });

とやってnとmを追いかけると、おまじない入りは

$ perl cont.pl # [["a", "b"], [["c", "d"], "e"]];
n: 1
m: 1
n: 2
n: 1
m: 1
n: 2
m: 1
m: 3
5

予想通りの挙動。

で、my $dummy = $contが評価されないようにしてみると

$ perl cont.pl# [["a", "b"], [["c", "d"], "e"]];
n: 1
m: 1
n: 2
m: 1
m: 3
n: 4
m: 1
m: 5
m: 7
...ずっと続く...

よくわからん。別に代入じゃなくて$contをprintしてもrefしても正常に実行されるので、クロージャの中に評価する式があることが重要みたいなんだけど、、、

山口家の逆襲->perl-解説->クロージャ

4:実体をそのまま覚えるためには、サブルーチン内でもそのレキシカル変数が使われていなくてはならない。 (サブルーチン内にその変数がなければ、実質サブルーチンはその変数を知らないのと同じコトになる)

これとか関係あるのだろうか?

goto使った継続だとおまじないがいらないってのもまた謎なんだよなぁ。