Scala関数型デザイン&プログラミング - Scalazコントリビューターによる関数型徹底ガイド

個数:1
紙書籍版価格 ¥4,212
  • Kinoppy
  • Reader

Scala関数型デザイン&プログラミング - Scalazコントリビューターによる関数型徹底ガイド


ファイル: /

内容説明

『本書に寄せて --- Martin Odersky Scala言語設計者』より――
本書は深く考えさせる本です。細部への注意を促し、プログラミングに対するあなたの考え方を否定するかもしれないからです。本書を読み、推奨されている練習問題を解くことで、純粋関数型言語とは何か、その言語で何を表現できるか、それにはどのようなメリットがあるかについて理解を深めることができるでしょう。
特に気に入っているのは、すべてがこの1冊に含まれていることです。可能な限り単純な表現から始まり、すべての抽象概念を詳しく説明した後、それらの上にさらに抽象概念を組み上げていきます。ある意味、表紙の向こうにScalaの別世界が展開します。その世界では、ミュータブルな状態は存在せず、すべての関数が純粋です。よく使用されるScalaライブラリは主に、関数型のインターフェイスを持ちながらも部分的に命令型の実装に基づいているため、この理想郷に少し似つかわしくありません。私の考えでは、ミュータブルな状態を関数型のインターフェイスにカプセル化できることは、Scalaの長所の1つです。しかし、その能力がよく誤用されることも事実です。それにはまって抜けられなくなっていることに気づいた場合は、本書が強力な毒消しになります。

目次

1.1 関数型プログラミングの利点:単純な例
1.2 関数とはいったい何か
1.3 参照透過性、純粋性、置換モデル
1.4 まとめ
第2章 Scala関数型プログラミングの準備
2.1 速習:Scala言語
2.2 プログラムの実行
2.3 モジュール、オブジェクト、名前空間
2.4 高階関数:関数に関数を渡す
2.5 多相関数:型の抽象化
2.6 型に従う実装
2.7 まとめ
第3章 関数型プログラミングのデータ構造/3.1 関数型データ構造の定義
3.2 パターンマッチング
3.3 関数型データ構造でのデータ共有
3.4 リストの再帰と高階関数の一般化
3.5 ツリー
3.6 まとめ
第4章 例外を使わないエラー処理/4.1 例外の光と影
4.2 例外に代わる手法
4.3 Optionデータ型
4.4 Eitherデータ型
4.5 まとめ
第5章 正格と遅延
5.1 正格関数と非正格関数
5.2 遅延リストの例
5.3 プログラムの記述と評価の切り分け
5.4 無限ストリームと余再帰
5.5 まとめ
第6章 純粋関数型の状態/6.1 副作用を使った乱数の生成
6.2 純粋関数型の乱数の生成
6.3 ステートフルAPIの純粋化
6.4 状態の処理に適したAPI
6.5 状態アクションデータ型の一般化
6.6 純粋関数型の命令型プログラミング
6.7 まとめ
Part.II 関数型デザインとコンビネータライブラリ
第7章 純粋関数型の並列処理
7.1 データ型と関数の選択
7.2 表現の選択
7.3 APIの改良
7.4 APIの代数
7.5 コンビネータを最も汎用的な形式に改良する
7.6 まとめ
第8章 プロパティベースのテスト/8.1 速習:プロパティベースのテスト
8.2 データ型と関数の選択
8.3 テストケースの最小化
8.4 ライブラリの使用とユーザビリティの改善
8.5 高階関数のテストと今後の展望
8.6 ジェネレータの法則
8.7 まとめ
第9章 パーサーコンビネータ
9.1 代数の設計から始める
9.2 代数の例
9.3 文脈依存への対処
9.4 JSONパーサーの作成
9.5 エラー報告
9.6 代数の実装
9.7 まとめ
Part.III 関数型デザインに共通する構造
第10章 モノイド
10.1 モノイドとは
10.2 モノイドによるリストの畳み込み
10.3 結合性と並列性
10.4 並列解析の例
10.5 畳み込み可能なデータ構造
10.6 モノイドの合成
10.7 まとめ
第11章 モナド/11.1 ファンクタ:map関数の一般化
11.2 モナド:flatMapと単位関数の一般化
11.3 モナドコンビネータ
11.4 モナド則
11.5 モナドとはいったい何か
11.6 まとめ
第12章 アプリカティブファンクタとトラバーサブルファンクタ/12.1 モナドの一般化
12.2 アプリカティブトレイト
12.3 モナドとアプリカティブファンクタの違い
12.4 アプリカティブファンクタの利点
12.5 アプリカティブの法則
12.6 トラバーサブルファンクタ
12.7 Traverseの使用
12.8 まとめ
Part.IV 作用とI/O
第13章 外部作用とI/O/13.1 作用のリファクタリング
13.2 単純なIO型
13.3 StackOverflowErrorの回避
13.4 より高機能なIO型
13.5 ノンブロッキングの非同期I/O
13.6 汎用目的のIO型
13.7 なぜIO型ではI/Oのストリーミングに不十分なのか
13.8 まとめ
第14章 局所作用とミュータブルな状態/14.1 純粋関数型の変更可能な状態
14.2 副作用のスコープを適用するためのデータ型
14.3 純粋性とコンテキスト
14.4 まとめ
第15章 ストリーム処理とインクリメンタルI/O/15.1 命令型I/Oの問題:例
15.2 単純なストリームトランスデューサ
15.3 拡張可能なProcess型
15.4 応用
15.5 まとめ
索引