20130331 - kyosen/learn-you-a-haskell GitHub Wiki
活動概要
- 日時:2013年03月31日(日)13:00~16:30
- 参加者:伊藤、乙村、矢野、辻
- 内容:すごい Haskell たのしく学ぼう! 第14章~第15章
第14章 もうちょっとだけモナド
14.1 Writer?中の人なんていません!
-
「中の人」って何?(伊藤)
- ログの収集や値の足しこみとかを「中の人」がしているように見えるから?(伊藤)
- 自分で書かないと何もしてくれないから。(矢野)
-
以前やった Pot の問題で使えるかも。(伊藤)
-
P.325 「非効率なリスト構築」で、左結合の効率が悪い理由は?(乙村)
- Haskell のリストは単方向リストかつ不変なので、先頭への要素追加は効率的だが、最後への要素追加はリストの再構築が必要になり非効率だから。(伊藤)
- P.8 「2つのリストを連結するとき、Haskell は1つ目のリストを最後まで走査します」(矢野)
14.2 Reader?それはあなたです!
-
Leader とかけている?(辻)
- 「読者」だから。
- er のあとにジョークを言うのがお決まりらしい。(乙村)
-
Writer と対になってるわけではない?(矢野)
-
共通の値を読んでいる。
14.3 計算の状態の正体
- 状態を変えられないので、前の状態から後の状態への関数として扱っている?(伊藤)
- IO モナドのステートは…?(乙村)
- IO モナドのステートは外に見えない。(伊藤)
14.4 Error を壁に
- Java で String が Error インターフェースを implements したら気持ち悪いが、Haskell だとあまり違和感がない。(伊藤)
- Ruby on Rails でも、String や Number に変換メソッドが追加されているが、気持ち悪い。(伊藤)
- Ruby では String クラス自体にメソッドを追加している(たぶん)。(伊藤、矢野)
- アプリケーション内でグローバルに影響する。
- Scala の implicit conversion でも同じようなことができる。(乙村)
- その文脈でしか機能しないので、あまり違和感ない。(伊藤)
14.5 便利なモナディック関数
14.6 安全な逆ポーランド記法電卓
14.7 モナディック関数の合成
14.8 モナドを作る
第15章 Zipper
- Zipper とは?(伊藤)
- データ構造の中を上がったり下がったりすることを Zipper に例えている。(矢野)
- あるいは、ファスナー、チャック etc.
15.1 歩こう
15.2 リストに注目する
15.3 超シンプルなファイルシステム
15.4 足下にご注意
15.5 読んでくれてありがとう!
次回の予定
-
05/12(日) 第1候補 → 米田くんに確認
-
05/19(日) 第2候補
-
入門機械学習
-
3章まで
-
必ず写経してくること!
-
サイトを GitHub へ移行する。
-
連絡用に Facebook のグループを作成する。