第11回名古屋Scala
9/17 に、第11回名古屋Scala勉強会に参加してきました。
今回は23章と24章の予定だったけど、盛り上がったので24章は次回に。
- 23章 for 式の再説
- モナド (1)
- bind : M[A] => (A => M[B]) => M[B]
- 最初の M[A] がレシーバ (Scala)
- return : A => M[A]
- この 2 つがあるとき、M は モナド (Haskell, do式が使える)
- 不思議な抽象だけど、いろいろ便利
- 例:リスト、Option (Maybe), IO処理、メモリ状態、パーサ、etc.
- Scala だと、bind は flatMap、return は 単一コンストラクタ (ユニットコンストラクタ) に対応
- for 式を使うには、map が必要 (map : M[A] => (A => B) => M[B] (Scala, 最初の M[A] がレシーバ))
- bind : M[A] => (A => M[B]) => M[B]
- F# のコンピューテーション式
- モナド (2)
- パターンマッチ
- 忍者パターンマッチ
- パターンマッチで変数を定義する
- 忍者パターンマッチ
- モナド (1)
scala> val h = ("hoge", 99) h: (java.lang.String, Int) = (hoge,99) scala> val (name, age) = h name: java.lang.String = hoge age: Int = 99
-
-
- ドラゴンパターンマッチ
- パターンマッチで無名関数を定義する
- p.430 inCheck ドラゴンパターンマッチによる実装 ↓
- ドラゴンパターンマッチ
-
scala> def inCheck:((Int,Int),(Int,Int))=>Boolean = { | case ((x1,x2),(y1,y2)) => x1 == y1 || x2 == y2 || (x1 - y1).abs == (x2 - y2).abs | } inCheck: ((Int, Int), (Int, Int)) => Boolean
- こんなの書きました
- bleis とん
- テスティングフレームワーク作ってみた
- パラメタライズドテスト書きたい
- テスト仕様書とかテストケースから自動生成したい
- Excel とか大変
- テスティングフレームワーク作ってみた
- leque さん
- lift で ファイルビューワ的な
- lift でクロージャ → いい感じに js に!
- dump
- List("") とかをいい感じに表示してくれる
- REPL のなかとか、こう...
- 2.8 から catching が使える
- lift で ファイルビューワ的な
- bleis とん
- bleis宅
次の日に Gitの勉強会 があったので、泊めてもらうことに。
wk6 と mrxptn も一緒。
bleis と F# の話してたりして、気付いたら 3時。
そこから (みんな寝てから)、化物語の最終巻と AB を見る。
・・・・・・
天使ちゃんマジ天使。
・・・・・・
お、2人起きた。(6時くらい)
・・・・・・
天使ちゃんマジ天使。
・・・・・・
昼か。(11時くらい)
wk6 は別の勉強会らしく、少し早く出てた。
3人で名古屋駅でラーメン食べて、Git勉強会へ。