ICFP 2010 実況など
ML で副作用を解析しようとするとモナドみたいなものが必要になるけど,モナドをそのまま使うとプログラム全体を書き換える必要があるので使い物にならない.effect を total, divergent などの情報をもつ部分型として表現する. #ML2010
2010-09-27 00:19:52#WGP Scrap Your Zipper:sybスタイルでgeneric zipperを書いたよという話。この辺の言語機能のチュートリアルとしてわかりやすかった。しかしこう、つい、Dなら一切効率落とさず、もっと型安全で、スキップ指定なども自由な物が書けるよなーとか思ってしまう
2010-09-27 00:22:36#WGP Generic Storage:再帰的な型を定義する時に不動点演算子(Y等)を明示的に貰って使う形で書いとくとアスペクト的に外から機能を注入できる(http://bit.ly/cGr3An )という技を使って、外部ディスクに格納されるデータ構造を作る汎用フレームワーク
2010-09-27 00:46:42#ML2010 first-class module を使うと (int U float) 同士の足し算で (int,float) や (float,int) の場合に型エラーになるような定義が実現できる.
2010-09-27 01:16:46#WGP Generic Subexpression:同じく不動点演算子によるアノテートを使って、構文木を表すデータ型に「ソースコード上の位置」の情報を外から埋め込むよというお話。さっきのにもSPJが質問してたけど、まだ"too much is polluted"と感じるなあ
2010-09-27 01:21:03#WGP …parser combinatorやcatamorphismを、位置情報awareにするには手で結局書き換えている辺りが。sybっぽくやって、もっと非侵入的にできるか?perhaps、という議論がなされている
2010-09-27 01:23:03#WGP Q:「コードの位置情報」は、いいんだけど、コードの変形するときに位置情報をどう伝達するか考えるのが一番面倒いところだと思うんだけどそういうのはどうするのだ A:Future Work / ConorがCoMonadでアノテートするといいよ!と言ってるけどよくわからん!
2010-09-27 01:27:07WGPは [発表] → [事前にassignされた "ディスカッタント" が1人が前に出てきて発表者と議論] → [通常の質疑応答] と3段階の発表構成になってるのが面白い。
2010-09-27 01:29:05今日はMLワークショップ(昨日は定理証明器とプログラミング言語理論のワークショップ)。70人ぐらいいて盛況です。http://www.cs.rit.edu/~mtf/ml2010/program.html#Program
2010-09-27 02:41:29昼食で関数型金融(?)関係者の方々とお会いしました。WindowsのTextPadでHaskellプログラム(Hoogleを含む)を書いている方や、会社の物理的位置(東京のどこか)がわからない:-)方など。
2010-09-27 02:51:45ICFP本体2日目に、JS社がホテルの会議室で関数型言語プログラマ募集ランチを開く予定とのチラシが。
2010-09-27 02:57:03#WGP Generic Multiset:multisetをベタで持つんじゃなくて、∪と×演算を記号的に演算の構文木として持つ&クエリもできれば構文木で持つと、Genericな同値類分解アルゴリズムで実装を彩れば対multisetのSQL風クエリが超簡潔かつ効率的に言語内で実現
2010-09-27 04:37:35#WGM (続) ∪と×は記号的だといいよ http://bit.ly/9KIiP6 てのは前に自分も書いたので納得で、ただ僕の場合は空集合Φは記号的じゃない方がいいと注釈がついたんだけど、それは僕のはsetを構築するまでの話で、これはその後でそれにクエリする話だからという差かな
2010-09-27 04:45:23#WGP DemeterF:関数型界隈でやられてるGeneric Programmingはパターンマッチ+再帰を汎化してく方向だが、逆にOO的なVisitorから始めて行くという方向でやってみたという話。foldっぽいシグネチャのvisitorを外部ツールで静的自動生成するだけ?
2010-09-27 04:54:54型エラーの表示方法を工夫する話.型衝突があった場所とその型の原因となった場所だけでなく,原因から衝突までの型伝播の path 周辺の情報も表示する. #ML2010
2010-09-27 05:38:30#WGP CleanのDynamicを型クラス対応にする話:2つの意味があって「単相型やパラメタ多相型に留まらず、型クラスで量化された値Ord a=>[a]->[a]などをDynamicに放り込めるようにする」のと「"Dynamicに入っている型がOrdならソートする"みたいに
2010-09-27 06:04:02#WGP (続)Dynamicに入ってる値の型クラス&辞書を動的に取り出す」を可能にする。概ねまあそうだよね、という実装をちゃんとした感じ。ただ質問が出てて、型クラスのinstance宣言自体をDynにパックしないので、通信越しに相手に無い型を動的に飛ばすとかできず残念よね、と
2010-09-27 06:11:58#WGP Reason Isomorphically:「米田の補題は楽しいよ!」という話。面白かった&発表者が凄く楽しそうだった。Haskellの言葉で言うと、「型AとBに一対一対応がつく」ことを証明するには、「∀α.(A→α)→αと∀α.(B→α)→α」の一対一対応を示せばよい
2010-09-27 06:46:05#WGP (続)という方針で、直接両方向の関数を構築するよりも、一段上に上がってから同型性の導出をすると随伴で定義された色々な型を関数のdomainとcodomainの間でいろいろ動かす証明が綺麗に書けるので綺麗、という感じ。論文も読みやすい
2010-09-27 06:48:42#WGP Muさん&森畑さん:プログラム運算スタイルで効率的なアルゴリズムを導出する際に使う定理の一つにThinning Theoremてのがあって、ある種の枝刈の形式化と思ってるんだけど違うかも的な物ですが、これを"近似解"へと一般化してFPTASの導出に使えるようにしたお話
2010-09-27 10:05:19