2010-09-11 [長年日記]
λ. iteratee I/O勉強会
に参加。詳しくはmaoeさんのブログなどを参照。
iteratee law とかないのなと思う。 IterVがMonadであることを含意するのが最低限の条件。
それと、以下の iteratee-0.4 での定義をCPSスタイルと言っていたけど、感じとしてはIterVMのモナディックなチャーチエンコーディング(?)を考えているような雰囲気だと思った。もう少しちゃんと考えたいところだけど。
iteratee-0.2 での定義:
data IterVM el m a = DoneM a (StreamG el) | ContM (Iteratee el m a) newtype Iteratee el m a = Iteratee { runIter :: StreamG el -> m (IterVM el m a) }
iteratee-0.4 での定義:
newtype Iteratee el m a = Iteratee { runIter :: forall r. (a -> Stream el -> m r) -> ((Stream el -> Iteratee el m a) -> Maybe ErrMsg -> m r) -> m r }
あと、全然脱線して、pirapirapiraさんに Epigram, OTT(observational type theory), Pola: a language for PTIME programming とかについて盛り上がる。
- Extensional Equality in Intensional Type Theory - ヒビルテ(2005-05-29)
- Towards Observational Type Theory - ヒビルテ(2006-05-16)
- Observational equality, now! - ヒビルテ(2009-07-15)
その後は例によってシャヒ・ダワットで懇親会。 ビリヤニというのが日本ではここでしか食べられないらしい*1。 それから、アダムの呪い、イブの7人の娘達 とかの話面白かった。 あと、「やっぱりgitは使える様にならないとなぁ」と思った。
*1 他のレストランではピラフみたいになっちゃうとか