[ruby] クロージャ

最近は週に2回、取引先に常駐しているので電車で通勤というものを経験している。通学通勤は近いところばかりで、少し遠くても自転車の経験しかないため、ほぼ初めてに近いw*1

そんな通勤時間に何をしているかというとプログラミング言語 ruby を読み進めたりしてる。そして帰宅してから、読んだところのコードを実行してみたり。

lambda で n 閉じこめ

def increment(n)
  lambda { n += 1 }
end

hoge = increment(3)
hoge.call #=> 4
hoge.call #=> 5
hoge.call #=> 6

Proc で n 閉じこめ

def increment2(n)
  Proc.new { n += 1 }
end
fuga = increment2(3)
fuga.call #=> 4
fuga.call #=> 5
fuga.call #=> 6

n 共有したクロージャ

def increment_and_reset(n)
  m = n
  incr = lambda { n += 1 }
  reset = lambda { n = m }
  [incr, reset]
end
incr, reset = increment_and_reset(5)
incr.call #=> 6
incr.call #=> 7
reset.call #=> 5
incr.call #=> 6
incr.call #=> 7
reset.call #=> 5

クロージャperl でもかなりあとになって理解したせいか、クロージャがわかるとその言語をつかんだ気になってくる。
まぁ、lambda と Proc の違いが曖昧なんだけども。

*1:初めて入った会社も電車通勤だったけど、まぁ、時間が定まってなかったので。

Fiber でフィボナッチ数列

これはプログラミング言語 ruby のまる移し
Fiber つかってフィボナッチ数列を返すのにクラス作って Fiber であることを隠蔽したパタン。

class FibonacciGenerator

  def initialize
    @x, @y = 0, 1
    @fiber = Fiber.new do
      loop do
        @x, @y = @y, @x+@y
        Fiber.yield @x
      end
    end
  end

  def next
    @fiber.resume
  end

  def rewind
    @x, @y = 0, 1
  end

end

g = FibonacciGenerator.new
10.times { print g.next, " " } # 1 1 2 3 5 8 13 21 34 55 
g.rewind; puts
10.times { print g.next, " " } # 1 1 2 3 5 8 13 21 34 55 
puts

この例で Fiber はなんとなくわかった感じだけど、イマイチ使いどころが思いつかない。

たこ焼き食べたり芝居観たりした

先週末土曜日は、しんみりとたこ焼きを食べる会に行ってきた。子供の成長の早さに驚く。そして泣かれるw

id:tomyheroフレームワーク作ってる横で、angelos のコードを思い出すべく HTTP::Engine と Middleware をさわったりしてた。なんかうどんのコードが参考になりました。

日曜日は夕方に聖蹟桜ヶ丘ヴィータホールに不等辺さんかく劇団の「トワの宇宙」を観に行った。
前もって空さんから SF だと聞いていたのだけど、話が壮大でウケタw

役者が22人と大人数だったためか、脚本が膨らんだから役者を集めたのかはわからんけど、多摩地区の劇団オールスター的な感じだった。*1
しかもその22人全員にそれなりのスポットをあてた脚本になってて、さらに伏線的なキーワード鏤められてて、「これ最後まとまるのかw」的なハラハラが多少ありつつもすべての風呂敷が畳まれての大団円だった。
場転時の映像とかは冗長でちょっと全体のテンポを悪くしてた気がします。あそこまでやっても、お客さんには説明でしかないというか。

あー、伏線的なキーワードと言えば、パスワードがギターのコード進行ってのは思いつかなかったです。実際に使ってる人は居そうだなぁ。そして、あれだけ発達した未来でもパスワードなのかとか思ってしまったりして。

あと、芝居が終わったあとでパンフレットが配られてたんだけど、そこに今回の話の年表とか載ってて、脚本書いた人の本気度が伝わってきましたw
不等辺さんかく劇団みたのは多分、背中のイジン以来だった気がする。

カメラもってたんだけど撮るの忘れたので文章だけでー。

*1:パンフ見る限りだと脚本ドリブンですね

喫茶店とかファミレスとかで

PC カタカタやってる人は、トイレ行くときどうしてるんだろ。
自分は macbook 持ってトイレ行きました。

財布や携帯はズボンのポッケに入れてるからなぁ。

そんな感じで久々にパフェ食べた。週末の夜はジョナサンに居る気がするw

あじさい撮ってきた

土曜日の昭和記念公園アジサイ撮影だったのが雨天中止となってしまって残念だった。
今日は仕事で会社に行ったので、ついでに1時間ほど抜け出して高幡不動アジサイを撮ってきた。

2009_06_07_0740

いつもは絞り優先でばかり撮るんだけど、どうも明るすぎるのでシャッタースピード優先で撮ってみた。

2009_06_07_0818

ポピー thon 以来、花を撮るのも結構楽しい。

2009_06_07_0781

元気があれば何でもできる!

元気がないとなんにもできない!うんこー!
ちょっと油断すると日記も日が空いてしまうな……。

マンガ少年別冊版の火の鳥が復刻してる?
なんか本屋で見つけた。表紙とか本のサイズはそのままだった。

火の鳥 1・黎明編

火の鳥 1・黎明編

5巻までしか持って無くて小学生の頃から5巻までを読み返してるんだよなぁ。
6巻以降が出たら買おう。

火の鳥は読んだ中では全部好きですが、特に未来編と復活編が好きです。あと宇宙編で脱出艇が一人コースを離れて行くところが怖くていいです。