トップ «前の日記(2012/03/12 (月) ) 最新 次の日記(2012/03/14 (水) )» 編集 RSS feed

HsbtDiary


2012/03/13 (火) [長年日記]

[asakusarb][ruby] asakusa.rb 第 149 回

今日は笹田さんの研究室で開催だった。参加者は10人くらい?

  • nahi さん Jenkins プラグインの仕組みをコードリーディングしましょう
  • だいたい JRuby の機能を使って Jenkins の オブジェクトをそのまま使えるようにしてるんで、JavaDoc を見れば何とかなります
  • Ruby じゃなくて Java の api をおもむろに叩いている部分は頑張るしかないですねー。
  • 笹田さんの研究室の学生の研究発表を聞く時間
  • DJS という RPC を使ってブラウザで動く JavaScript をサーバーサイドの Ruby で実現できるという研究(だいたいこんな感じ)
  • 前田さんの基調講演
  • lazy.flat_map を入れ子にしたら動かなくなったんですが
  • というわけで笹田さん直してください(rb_block_call? が原因らしい)

だいたいこんな感じ。

def foo
  (1..n).lazy.flat_map do |a|
    (1..m).lazy.flat_map do |b|
    ...
    end
  end
end

p foo.take(10)

上のような入れ子になった Enumerable#lazy を外から take を呼んだときの動きがどうしても理解できなくてぐだぐだと絡んでいたんだけど、ActiveRecord みたいな物ですよと言われてやっと理解できた。単に内側の lazy は外の flat_map で評価されるから、take 無しでも値が取れるということらしい。だいぶわかりにくいなあ(オレが勉強不足なだけ)

次回は150回記念だけど、休日なので多分お休み。