comparison slides/20140715/slide.md @ 29:e2c7d95e9d81

auto-Update generated slides by script
author Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
date Tue, 15 Jul 2014 15:40:27 +0900
parents
children
comparison
equal deleted inserted replaced
28:9e50a3dd76fe 29:e2c7d95e9d81
1 title: プログラムのデバッグ支援(仮)
2 author: Yasutaka Higa
3 cover:
4 lang: Japanese
5
6
7
8 # 研究目的(仮)
9 * プログラミングにおいて、ソースコードを改変するとプログラムの挙動も変わる
10 * 挙動は予想されていた挙動と異なる場合があり、それはバグとなる
11 * ソースコードの改変前と改変後の挙動を比較することで、デバッグの支援になるのでは無いか
12 * 異なるバージョンのプログラムを同時に実行できるデバッグ支援ツールを開発する
13
14
15 # 近況報告
16 * オープンキャンパスは土曜日です
17 * ハッカーズチャンプルー行ってきました
18 * glibc の printf ちょっと見たりしました
19 * parallel debugger の 例探しは難航中
20 * Reflection without remorse を一通り流し読み
21
22
23 # parallel debugger sample session
24 * Cerium を clone してみました
25 * debugger なので実行できるコードを考える
26 * あるならそれで bisect できる
27 * VCS にさせるべきなのかな、と思ってしまったり
28 * もっと内部的な処理が分かる実行コード?
29 * それってもうテストなのでは
30 * うーん、ってなってます
31
32 # reflection without remorse
33 * 所感まとめ
34 * モノイドに対する演算で右結合だと遅いやつ
35 * それを右結合で書かれても CPS にすることで左結合にしよう
36 * データ型の変換で CPS に変えることができそう
37 * 適応例
38 * list の ++ とか
39 * Monad にも適用可能っぽいです
40
41
42 # reflection without remorse - diff list
43 * hg/Members/atton/haskell/reflection_without_remorse にあります
44 * DiffList を定義
45 * リストを取ってリストを返す
46
47 ```
48 type DiffList a = [a] -> [a]
49 ```
50
51 # reflection without remorse - abs and rep
52 * List から DiffList にする rep と DiffList から List にする abs
53
54 ```
55 absFromDiffList :: DiffList a -> [a]
56 absFromDiffList a = a []
57 rep :: [a] -> DiffList a
58 rep = (++)
59 ```
60
61
62 # reflection without remorse - concat diffliset
63 * difflist の concat は 関数合成
64 * difflist 最後に abs されるまで ++ は評価されないので速い
65 * 実行例はリポジトリで
66
67 ```
68 (+++) :: DiffList a -> DiffList a -> DiffList a
69 (+++) = (.)
70 ```
71
72 <!-- vim: set filetype=markdown.slide: -->