changeset 53:34307ce54385

Add slide for seminar
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Tue, 15 Jul 2014 15:40:25 +0900
parents 20a4d2010f37
children 8c519b790453 3b126ecd2c8a
files slides/20140715/slide.md
diffstat 1 files changed, 72 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/slides/20140715/slide.md	Tue Jul 15 15:40:25 2014 +0900
@@ -0,0 +1,72 @@
+title: プログラムのデバッグ支援(仮)
+author: Yasutaka Higa
+cover:
+lang: Japanese
+
+
+
+# 研究目的(仮)
+* プログラミングにおいて、ソースコードを改変するとプログラムの挙動も変わる
+* 挙動は予想されていた挙動と異なる場合があり、それはバグとなる
+* ソースコードの改変前と改変後の挙動を比較することで、デバッグの支援になるのでは無いか
+* 異なるバージョンのプログラムを同時に実行できるデバッグ支援ツールを開発する
+
+
+# 近況報告
+* オープンキャンパスは土曜日です
+* ハッカーズチャンプルー行ってきました
+* glibc の printf ちょっと見たりしました
+* parallel debugger の 例探しは難航中
+* Reflection without remorse を一通り流し読み
+
+
+# parallel debugger sample session
+* Cerium を clone してみました
+* debugger なので実行できるコードを考える
+* あるならそれで bisect できる
+  * VCS にさせるべきなのかな、と思ってしまったり
+* もっと内部的な処理が分かる実行コード?
+  * それってもうテストなのでは
+* うーん、ってなってます
+
+# reflection without remorse
+* 所感まとめ
+  * モノイドに対する演算で右結合だと遅いやつ
+  * それを右結合で書かれても CPS にすることで左結合にしよう
+  * データ型の変換で CPS に変えることができそう
+* 適応例
+  * list の ++ とか
+  * Monad にも適用可能っぽいです
+
+
+# reflection without remorse - diff list
+* hg/Members/atton/haskell/reflection_without_remorse にあります
+* DiffList を定義
+* リストを取ってリストを返す
+
+```
+type DiffList a = [a] -> [a]
+```
+
+# reflection without remorse - abs and rep
+* List から DiffList にする rep と DiffList から List にする abs
+
+```
+absFromDiffList :: DiffList a -> [a]
+absFromDiffList a = a []
+rep :: [a] -> DiffList a
+rep = (++)
+```
+
+
+# reflection without remorse - concat diffliset
+* difflist の concat は 関数合成
+* difflist 最後に abs されるまで ++ は評価されないので速い
+* 実行例はリポジトリで
+
+```
+(+++) :: DiffList a -> DiffList a -> DiffList a
+(+++) = (.)
+```
+
+<!-- vim: set filetype=markdown.slide: -->