YAPC

会場より。


mixiの負荷分散とRubyの高橋さんの話は面白かった。


が、Perlよく知らんのでその他のプレゼンではPugsRTypeソースコード読んでました。Monadの重ね合わせ(StateMonad + ControlMonad)の辺り。そこが分かれば後はどんどん読んでました。

type Eval a = EvalT (ContT Value (StateT RTState IO)) a
type EvalMonad = EvalT (ContT Value (StateT RTState IO))
newtype EvalT m a = EvalT { runEvalT :: m a }

Stateには評価時の状態(グローバル変数のテーブルとか)を保持させる。ContinuationMonadはRubyで言うとbegin rescueの様なエラー処理機構を実現する為に使われている。


うーん、楽しい。ってYAPC関係無い...。