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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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: -->