Mercurial > hg > Members > atton > seminar_slides
annotate slides/20141021/slide.md @ 73:b58c0ab4f5e4
Add slides for seminar
author | Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 21 Oct 2014 17:45:47 +0900 |
parents | |
children |
rev | line source |
---|---|
73
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
1 title: モナドによるプログラムの拡張 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
2 author: Yasutaka Higa |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
3 cover: |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
4 lang: Japanese |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
5 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
6 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
7 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
8 # 研究目的(modified) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
9 * プログラミングにおいて、ソースコードを改変するとプログラムの挙動も変わる |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
10 * しかし、バージョン互換を維持する場合など、ソースコードを変更した後も同じ結果を得たい場合もある |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
11 * プログラムの改変をモナドによる拡張としてとして記述することで過去のプログラムの挙動も保存したい |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
12 * これによりリファクタリング支援や後方互換性の確保、拡張による実行結果の変化の検出などを行なう |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
13 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
14 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
15 # Summary |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
16 * 中間発表予稿提出が今月末(10/30) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
17 * 教官室 Mac mini の domain を教えてください |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
18 * Similar の Functor 則の証明 in Agda |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
19 * Similar の Monad 則の証明中 in Agda |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
20 * あと例題欲しい |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
21 * Haskell で version compatible なコードを書く予定 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
22 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
23 # Proof Functor-laws to similar |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
24 * Functor-laws [(Haskell)](http://www.haskell.org/haskellwiki/Functor) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
25 * refl で問題無し |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
26 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
27 ``` |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
28 fmap id = id |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
29 fmap (p . q) = (fmap p) . (fmap q) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
30 ``` |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
31 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
32 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
33 # Proof Monad-laws to Similar (Category) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
34 * Monad-laws (Category) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
35 * mu and eta |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
36 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
37 ``` |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
38 join . fmap join = join . join |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
39 join . fmap return = join . return = id |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
40 return . f = fmap f . return |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
41 join . fmap (fmap f) = fmap f . join |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
42 ``` |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
43 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
44 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
45 # Proof Monad-laws to Similar (Haskell) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
46 * Monad-laws (Haskell) |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
47 * return and bind |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
48 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
49 ``` |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
50 return a >>= k = k a |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
51 m >>= return = m |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
52 m >>= (\x -> k x >>= h) = (m >>= k) >>= h |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
53 ``` |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
54 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
55 # Check Point |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
56 * 3 つめでちょっとつまってます |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
57 |
b58c0ab4f5e4
Add slides for seminar
Yasutaka Higa <e115763@ie.u-ryukyu.ac.jp>
parents:
diff
changeset
|
58 <!-- vim: set filetype=markdown.slide: --> |