実践F# 関数型プログラミング入門

[表紙]実践F# 関数型プログラミング入門

紙版発売
電子版発売

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 イベントについて

著者プロフィール

荒井省三(あらいしょうぞう)

マイクロソフト株式会社に勤務。2001年11月に入社してから一貫して.NET Framework技術の啓発活動に従事する。マイクロソフト主催やボーランドカンファレンスなどの数々の技術セミナーでの講演や,数々の技術記事なども執筆する。

マイクロソフト入社前は某独立系SIerにて業務系の受託開発に従事し,製造,流通,アパレル,小売など数々の業務ソフトウェアの開発を経験している。高校生の時に,FORTRANによるプログラミングを始めたのがきっかけでIT業界に生息し続けている。


いげ太(いげた)

悪あがきしているあかんたれなVBAプログラマー。C#やPerlもたまに使う。F#が好き だけど,どちらかといえばミスチルが好き。