目次
1章 関数型言語の潮流
- 1.1 プログラミング言語の歴史
- 1.2 プログラミング言語の分類
- 1.3 プログラミングパラダイム
- 1.4 プログラミング言語と抽象化の関係
- 1.5 不遇の関数型言語
- 1.6 並列コンピューティングへの流れ
- 1.7 並列コンピューティングに適したパラダイム
2章 F#の基本
- 2.1 F#とは
- 2.2 F#の導入
- 2.3 F#の基本的な使用方法
- 2.4 おまけ(リファレンス)
第3章 F#へようこそ
- 3.1 Hello, F# Interactive!
- 3.2 高級な電卓
- 3.3 コメント
- 3.4 itの正体
- 3.5 変数束縛
- 3.6 初めての関数
- 3.7 ローカル変数
- 3.8 式と文
- 3.9 ファーストクラス関数
- 3.10 束縛≠代入
- 3.11 シャドウイング
第4章 土台を超えて
- 4.1 等値比較と真偽値
- 4.2 大小比較
- 4.3 論理演算
- 4.4 条件式
- 4.5 連なった条件式
- 4.6 ユニット-値がないことを示す
- 4.7 ユニットと副作用
- 4.8 可変な変数
- 4.9 By Value
- 4.10 タプル-複数の値を組にする
- 4.11 カリー化
- 4.12 演算子
- 4.13 ビット単位演算子
- 4.14 パイプライン演算子
- 4.15 高階関数
- 4.16 関数合成演算子
- 4.17 再帰
- 4.18 末尾再帰
- 4.19 相互再帰
第5章 強い静的型付け
- 5.1 コンパイルタイム
- 5.2 インライン関数
- 5.3 プリミティブ型
- 5.4 型変換
- 5.5 算術オーバーフロー/モジュールの使用
- 5.6 nanとinfinity/名前空間とオブジェクトの使用
- 5.7 printfのふしぎ
- 5.8 型推論
- 5.9 演算子の特殊性
- 5.10 パターンマッチ
- 5.11 パターンの網羅性
- 5.12 function式
- 5.13 ユーザー定義型
- 5.14 レコード
- 5.15 判別共用体
- 5.16 パターンマッチと識別子
- 5.17 構造的な値
- 5.18 型略称
- 5.19 オプション
- 5.20 ジェネリック-多相性
- 5.22 型と制約と比較
- 5.23 単位系
- 5.24 ボクシング
- 5.25 例外を発生させる
- 5.26 例外の捕捉
第6章 不純の価値は
- 6.1 冗語構文から軽量構文へ
- 6.2 モジュール
- 6.3 アクセス制御
- 6.4 命令型のループ
- 6.5 参照セル
- 6.6 値制限
- 6.7 クロージャ
- 6.8 リファレンス スコープの封鎖
- 6.9 副作用と参照透明性
- 6.10 関数アウトサイダー
- 6.11 参照渡し
- 6.12 出力のための引数
- 6.13 評価戦略
- 6.14 遅延実行
- 6.15 選ばれなかった式
- 6.16 標準入出力
- 6.17 リソース
第7章 コレクション!コレクション!コレクション!
- 7.1 リスト
- 7.2 再帰型
- 7.3 また再帰
- 7.4 またまた再帰
- 7.5 制約を逃れる
- 7.6 リストの結合
- 7.7 内包的記法
- 7.8 リスト操作ひとめぐり
- 7.9 配列
- 7.10 多次元配列
- 7.11 配列のインデックス
- 7.12 シーケンス
- 7.13 シーケンスに親しむ
- 7.14 レガシーとの協調
- 7.15 unfold
- 7.16 遅延の終わり
- 7.17 遅延コストを払うのは誰だ
- 7.18 参照型
- 7.19 集合
- 7.20 辞書
第8章 OOP Mix
- 8.1 F#とオブジェクト指向プログラミング
- 8.2 本当は全部がオブジェクト
- 8.3 クラス
- 8.4 素朴なクラス
- 8.5 パイプラインとともに
- 8.6 名前付き引数とオプショナル引数
- 8.7 オーバーロード
- 8.8 抽象クラス
- 8.9 継承のうれしさ
- 8.10 キャスト
- 8.11 インターフェース
- 8.12 nullの是非を問う
- 8.13 後始末
- 8.14 オブジェクト式
- 8.15 アクティブパターン
- 8.16 構造体
- 8.17 デリゲート
- 8.18 列挙型
- 8.19 型拡張
- 8.20 演算子オーバーロード
- 8.21 ジェネリック制約
第9章 .NET Frameworkのライブラリを使用する
- 9.1 F#から見た.NET Framework
- 9.2 オブジェクトの持つメンバー呼び出しの基本
- 9.3 標準入出力を使う
- 9.4 ファイルの入出力を行う
- 9.5 GUIを持つWindowsアプリケーションを作成する
- 9.6 使用方法のまとめ
第10章 モジュールとシグネチャ
- 10.1 モジュール
- 10.1.1 関数の再利用
- 10.1.2 関数の組み合わせ
- 10.1.3 モジュール
- 10.1.4 Visual Studioでモジュールを作成する
- 10.1.5 名前空間
- 10.1.6 共通言語ランタイムとモジュールの関係
- 10.2 シグネチャ
- 10.2.1 シグネチャとは
- 10.2.2 シグネチャの詳細説明
第11章 ワークフローと非同期ワークフロー
- 11.1 ワークフロー
- 11.1.1 式という概念の全体像
- 11.1.2 コンピュテーション式の全体像
- 11.1.3 シーケンス式
- 11.1.4 コンピュテーション式
- 11.1.5 ワークフローを支える逐次実行とは
- 11.2 非同期ワークフロー
- 11.2.1 非同期ワークフローが必要な理由
- 11.2.2 非同期ワークフローの仕組みについて
- 11.2.3 非同期ワークフローの応用例
- 11.3 メッセージと非同期ワークフロー
- 11.3.1 メッセージの基本的な活用
- 11.3.2 エージェントに停止機能を持たせるには
- 11.3.3 エージェントから値を受け取るには
- 11.3.4 メッセージを選択するエージェントを作成するには
- 11.3.5 エージェントの応用例
第12章 F#を拡張するライブラリ
- 12.1 ASP.NET Webアプリケーション
- 12.1.1 Webフォームを作成する
- 12.2 LINQの活用
- 12.3 パラレルLINQの活用
- 12.4 ユーティリティツール
- 12.4.1 HTMLドキュメント生成ツール(fshtmldoc.exe)
- 12.4.2 字句解析器と構文解析器
- 12.5 その他のライブラリ
- 12.5.1 FSharp.PowerPack.dll
- 12.5.2 FSharp.PowerPack.Metadata.dll
- 12.5.3 ライブラリの使い方を探すには
Appendix
- A 本書の用語集
- B 参考資料
- C コード クオート式
- D イベントについて