プログラミング in OCaml †
プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで〜 五十嵐淳 技術評論社 2014-12-09 ¥ 2780(Kindle版 ¥ 1,512) |
まえがき †
この本はObjective Caml、または略してOCamlというプログラミング言語の解説書です。OCamlは、世の中で多く使われているC言語や、Java、はたまたPerl、Rubyといった言語とはプログラムを作る時の考え方やプログラムの趣が違っていて、(そういった言語でプログラムの経験がある人は余計に)とっつきにくい面もあります。しかし、それらは実は、間違いの少ないプログラムを書くために有効な機能を追求していった結果なのです。ですから、OCamlプログラミング経験はほかの言語でのプログラミングにも必ず役に立ちます。また、逆に、この本を読み終える頃には、ほかの言語にはなぜOCamlにあったこの機能がないんだろう、とか感じることと思います。
では、早速、楽しいOCamlプログラミングを始めましょう。
目次 †
No. | 章 | 節 |
1 | 第1章 はじめに | 1.1 この本の読み方 |
2 | 1.2 準備 | |
3 | 1.3 OCamlに関する情報源 | |
4 | 1.4 OCamlの特徴 * | |
5 | 1.5 OCamlの歴史 | |
6 | 第2章 いろいろな式を評価してみよう | 2.1 対話式コンパイラ? |
7 | 2.2 基本データ型とその演算? | |
8 | 2.3 変数束縛による定義? | |
9 | 第3章 関数型言語の醍醐味:関数 | 3.1 簡単な関数の定義? |
10 | 3.2 条件分岐と真偽値型bool? | |
11 | 3.3 局所的変数束縛とlet式? | |
12 | 3.4 構造のためのデータ型:組? | |
13 | 3.5 再帰関数? | |
14 | 3.6 高階関数? | |
15 | 第4章 少ない手間で型付けをする:多相性と型推論 | 4.1 多相的関数とパラメトリック多相? |
16 | 4.2 型推論とlet多相? * | |
17 | 4.3 Case Study:コンビネータ? | |
18 | 4.4 練習問題? | |
19 | 第5章 再帰的多相的データ構造:リスト | 5.1 リストの構成法? |
20 | 5.2 リストの要素へのアクセス:match 式とリストパターン? | |
21 | 5.3 リストを操作するさまざまな関数? | |
22 | 5.4 Case Study:整列アルゴリズム? | |
23 | 5.5 練習問題? | |
24 | 第6章 データ構造をデザインする:レコードとヴァリアント | 6.1 レコード? |
25 | 6.2 ヴァリアント? | |
26 | 6.3 ヴァリアントの応用? | |
27 | 6.4 Case Study:二分木? | |
28 | 6.5 Case Study:無限列? | |
29 | 6.6 練習問題? | |
30 | 第7章 例外処理 | 7.1 オプション型による例外処理? |
31 | 7.2 raise式とtry式による例外処理? | |
32 | 7.3 exception宣言とexn型? | |
33 | 7.4 練習問題? | |
34 | 第8章 書き換え可能なデータ構造と入出力を使った命令型プログラム | 8.1 unit型? |
35 | 8.2 書き換え可能なデータ構造? | |
36 | 8.3 制御構造? | |
37 | 8.4 Case Study:参照を使ったデータ構造 ― キュー? | |
38 | 8.5 チャネルを使った入出力? | |
39 | 8.6 練習問題? | |
40 | 第9章 モジュールによるプログラムの構造化 | 9.1 ライブラリ・モジュールの使い方? |
41 | 9.2 モジュール定義? | |
42 | 9.3 シグネチャを使った情報隠蔽と抽象データ型? * | |
43 | 9.4 練習問題? | |
44 | 第10章 バッチコンパイラと分割コンパイル | 10.1 バッチコンパイラによる実行可能ファイルの作成? |
45 | 10.2 モジュール単位の分割コンパイル? | |
46 | 10.3 システム周りの関数・モジュール? | |
47 | 10.4 その他? | |
48 | 10.5 練習問題? | |
49 | 第11章 モジュール関数:ファンクター * | 11.1 ライブラリモジュールのファンクターとファンクター適用? |
50 | 11.2 ファンクター定義? | |
51 | 11.3 ファンクターと情報隠蔽? ** | |
52 | 11.4 複数の引数をとるファンクター? | |
53 | 11.5 練習問題? | |
54 | 第12章 OCamlの“O”:オブジェクト * | 12.1 単純なクラス? |
55 | 12.2 自分自身のメソッドを呼び出す? | |
56 | 12.3 継承によるクラスの拡張? | |
57 | 12.4 オブジェクトのための型付け? | |
58 | 12.5 より高度なクラス機能・型? ** | |
59 | 12.6 練習問題? | |
60 | 第13章 ラベル付き引数とオプション引数 | 13.1 ラベル付き関数を使う? |
61 | 13.2 ラベル付き引数詳説? | |
62 | 13.3 オプション引数? | |
63 | 13.4 まとめ? | |
64 | 第14章 多相ヴァリアント | 14.1 多相ヴァリアントの基本? |
65 | 14.2 関数定義の拡張? * | |
66 | 14.3 再帰的関数と多相ヴァリアント? ** | |
67 | 14.4 その他? * | |
68 | 14.5 練習問題? | |
69 | 第15章 GUI ライブラリ:LablTk | 15.1 「銀行窓口」を作ってみる? |
70 | 15.2 ウィジェットの紹介? | |
71 | 15.3 ウィジェットの配置:Tk.pack関数とPackモジュール? | |
72 | 15.4 イベント処理の割り当て:bind? | |
73 | 15.5 その他? | |
74 | 15.6 練習問題? | |
75 | 第16章 Case Study:お絵かきロジック | 16.1 お絵かきロジックとは?? |
76 | 16.2 プログラム解説? | |
77 | 16.3 まとめ? | |
78 | あとがき? | |
79 | PPENDIX:A OCaml処理系などのインストール | A.1 Windows環境へのインストール? |
80 | A.2 Linux環境へのインストール? | |
81 | APPENDIX:B OCaml Browserの使い方 | B.1 エディタの起動法・使い方? |
82 | B.2 シェル(コンパイラ窓)の使い方? | |
83 | B.3 ライブラリブラウザの使い方? | |
84 | APPENDIX:C ocaml-modeの設定・使い方 | C.1 プログラム編集のためのコマンド? |
85 | C.2 シェルバッファでのコマンド? |
目次の難易度のマーク †
*印:難しい
**印:さらに難しい
最初は読み飛ばしてもOK
出版社 †
- プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで〜:書籍案内|技術評論社
http://gihyo.jp/book/2007/978-4-7741-3264-8
- プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで
http://www.fos.kuis.kyoto-u.ac.jp/~igarashi/OCaml/