実践F# 関数型プログラミング入門
2011年1月7日紙版発売
2012年5月23日電子版発売
荒井省三,いげ太 著
B5変形判/464ページ
定価3,520円(本体3,200円+税10%)
ISBN 978-4-7741-4516-7
ただいま弊社在庫はございません。
書籍の概要
この本の概要
.NETで使われているジェネリックやラムダ式は,関数型言語では早くから提供されていた機能であり,.NET向けに実装されたものといえます。関数型言語は、古くから存在するにも関わらず,手続型言語になれたユーザには難しいものと敬遠されてきました。昨今のクラウド化/マルチコアが現実的になり,いよいよ関数型が必要になってきました。本書はF#のプログラミング解説に留まらず,関数型がどのようなものか理解でき,技術者が興味のある「実際に関数型言語をどのようにシステムに組み込むべきか」というところまで解説しています。
こんな方におすすめ
- 関数型言語に興味を持っている方
- F#に興味がある方
この書籍に関連する記事があります!
- 関数型言語が人気の理由
- このところ関数型言語の書籍の発行・話題で賑わっています。OCamlやHaskell,Erlang,Scalaといった名前を聞いたことがあるのではないでしょうか?
目次
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 イベントについて
この本に関連する書籍
-
はじめてのLisp関数型プログラミング――ラムダ計算からリファクタリングまで一気にわかる
Lisp・関数型プログラミングのメリットとは何か――副作用のないプログラミングがまず挙げられます。これでバグが圧倒的に少なくなります。さらにはコードの再利用がしや...
-
おいしいClojure入門
フランス人プログラマのニコラが,Clojureを包丁代わりにHadoopやRedisといった流行の素材を自由自在にプログラミングします。関数型プログラミングというと,敷居が高...
-
実践 DLR .NET活用テクニック入門
近年RubyやPythonに代表される動的言語が人気を集めています。一方C#に代表される.NETプログラミングは静的言語と言われています。動的言語には動的言語の便利性があり...
-
実践JS サーバサイドJavaScript入門
クラウド,並行処理に代表される次世代を意識したWebアプリ開発の現場では,サーバサイド技術として,関数型言語と並びJavaScriptが注目されています。クライアント/サ...
-
オブジェクト指向プログラマが次に読む本―Scalaで学ぶ関数脳入門
本書は,新たな知的刺激を求めるオブジェクト指向プログラマのための本です。本書では,オブジェクト指向と関数型のハイブリッド言語として最近注目を集めているプログ...