狠狠撸
Submit Search
Chapter5.3
?
1 like
?
755 views
Kenji Doi
Follow
Functional Programming in Scala v12 社内読書会用資料
Read less
Read more
1 of 13
Download now
Download to read offline
More Related Content
Chapter5.3
1.
5.3 Separating program description
from evaluation AMoAd network ?土井健司
2.
関?心の分離離 (separation of concerns) !
? 前節での関?心の分離離の例例 ! ? 第?一級関数が受け取った引数を?一回ずつ実?行行 ! ? エラーハンドリングにOptionを利利?用 ! ? Streamでの分離離 ! ? 実際に必要になるまで処理理を実施しない ! ? 遅延の利利?用 ※ ?第?一級関数:関数型
3.
exists関数(基本実装) def exists(p: A
=> Boolean): Boolean = ? uncons match { ? ? ? case Some(c) => p(c.head) || c.tail.exists(p) ? ? ? case None => false ? } ! ? || は左辺がtrueの場合右辺を評価しない ! ? tailはlazy valにより、いかなるコードも遅延評価
4.
exists関数(foldRight) def foldRight[B](z: =>
B)(f: (A, => B) => B): B = ? uncons match { ? ? ? case Some(c) => f(c.head, c.tail.foldRight(z)(f)) ? ? ? case None => z ? } def exists(p: A => Boolean): Boolean = ? foldRight(false)((a, b) => p(a) || b) ! ? fは第2引数に対し正格評価ではない ! ? これにより、existsをfoldRightを使って実装可能
5.
EXCERCISE
6.
1.? Stream(1,2,3,4).map(_ +
10)... 2.? cons(11, Stream(2,3,4).map(_ + 10))... 3.? Stream(2,3,4).map(_ + 10)... 4.? cons(12, Stream(3,4).map(_ + 10))... 5.? 12 :: Stream(3,4).map(_ + 10)... 6.? ... 遅延評価順序
7.
遅延評価順序 ! ? 以降降、補?足的に処理理イメージを記載。 !
? 厳密に記述が困難なためあくまで「イメージ」
8.
1. ?Stream(1,
2, 3, 4)... 2. cons(1.map(_ + 10)..., Stream(2,3,4).map... 1.5 Stream(1, 2, 3, 4).apply(_.head, _.tail: _*)... 遅延評価順序(1 -> 2)
9.
2. cons(1.map(_ +
10)..., Stream(2,3,4)... 3. Stream(2,3,4).map(_ + 10)... 2.5 (1 + 10 ) % 2 => [FILTERED] 遅延評価順序(2 -> 3)
10.
3. Stream(2,3,4).map(_ +
10)... 4. cons(2.map(_ + 10)..., Stream(3,4).map... 3.5 Stream(2, 3, 4).apply(_.head, _.tail: _*)... 遅延評価順序(3 -> 4)
11.
4. cons(2.map(_ +
10)..., Stream(3,4).map... 5. 12 :: Stream(3,4).map(_ + 10)... 4.5 (2 + 10) % 2 => [OK] 遅延評価順序(4 -> 5)
12.
後続処理理の省省略略(find) def find(p: A
=> Boolean): Option[A] = ? filter(p).uncons.map(_._1) ! ? 発?見見し次第、終了了する
13.
遅延評価のメモリ効率率率 ! ? 中間ストリームを?生成しない !
? 現?行行エレメントの変換と補完に必要なメモリのみでOK ! ? Stream(1, 2, 3, 4).map(_ + 10).filter(_ % 2 == 0)の場合 ! ? 1, 3はfilter後にはガベージコレクション可能
Download now