OCaml

プログラミング 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 この本の読み方
21.2 準備
31.3 OCamlに関する情報源
41.4 OCamlの特徴 *
51.5 OCamlの歴史
6第2章 いろいろな式を評価してみよう2.1 対話式コンパイラ?
72.2 基本データ型とその演算?
82.3 変数束縛による定義?
9第3章 関数型言語の醍醐味:関数3.1 簡単な関数の定義?
103.2 条件分岐と真偽値型bool?
113.3 局所的変数束縛とlet式?
123.4 構造のためのデータ型:組?
133.5 再帰関数?
143.6 高階関数?
15第4章 少ない手間で型付けをする:多相性と型推論4.1 多相的関数とパラメトリック多相?
164.2 型推論とlet多相? *
174.3 Case Study:コンビネータ?
184.4 練習問題?
19第5章 再帰的多相的データ構造:リスト5.1 リストの構成法?
205.2 リストの要素へのアクセス:match 式とリストパターン?
215.3 リストを操作するさまざまな関数?
225.4 Case Study:整列アルゴリズム?
235.5 練習問題?
24第6章 データ構造をデザインする:レコードとヴァリアント6.1 レコード?
256.2 ヴァリアント?
266.3 ヴァリアントの応用?
276.4 Case Study:二分木?
286.5 Case Study:無限列?
296.6 練習問題?
30第7章 例外処理7.1 オプション型による例外処理?
317.2 raise式とtry式による例外処理?
327.3 exception宣言とexn型?
337.4 練習問題?
34第8章 書き換え可能なデータ構造と入出力を使った命令型プログラム8.1 unit型?
358.2 書き換え可能なデータ構造?
368.3 制御構造?
378.4 Case Study:参照を使ったデータ構造 ― キュー?
388.5 チャネルを使った入出力?
398.6 練習問題?
40第9章 モジュールによるプログラムの構造化9.1 ライブラリ・モジュールの使い方?
419.2 モジュール定義?
429.3 シグネチャを使った情報隠蔽と抽象データ型? *
439.4 練習問題?
44第10章 バッチコンパイラと分割コンパイル10.1 バッチコンパイラによる実行可能ファイルの作成?
4510.2 モジュール単位の分割コンパイル?
4610.3 システム周りの関数・モジュール?
4710.4 その他?
4810.5 練習問題?
49第11章 モジュール関数:ファンクター *11.1 ライブラリモジュールのファンクターとファンクター適用?
5011.2 ファンクター定義?
5111.3 ファンクターと情報隠蔽? **
5211.4 複数の引数をとるファンクター?
5311.5 練習問題?
54第12章 OCamlの“O”:オブジェクト *12.1 単純なクラス?
5512.2 自分自身のメソッドを呼び出す?
5612.3 継承によるクラスの拡張?
5712.4 オブジェクトのための型付け?
5812.5 より高度なクラス機能・型? **
5912.6 練習問題?
60第13章 ラベル付き引数とオプション引数13.1 ラベル付き関数を使う?
6113.2 ラベル付き引数詳説?
6213.3 オプション引数?
6313.4 まとめ?
64第14章 多相ヴァリアント14.1 多相ヴァリアントの基本?
6514.2 関数定義の拡張? *
6614.3 再帰的関数と多相ヴァリアント? **
6714.4 その他? *
6814.5 練習問題?
69第15章 GUI ライブラリ:LablTk15.1 「銀行窓口」を作ってみる?
7015.2 ウィジェットの紹介?
7115.3 ウィジェットの配置:Tk.pack関数とPackモジュール?
7215.4 イベント処理の割り当て:bind?
7315.5 その他?
7415.6 練習問題?
75第16章 Case Study:お絵かきロジック16.1 お絵かきロジックとは??
7616.2 プログラム解説?
7716.3 まとめ?
78あとがき?
79PPENDIX:A OCaml処理系などのインストールA.1 Windows環境へのインストール?
80A.2 Linux環境へのインストール?
81APPENDIX:B OCaml Browserの使い方B.1 エディタの起動法・使い方?
82B.2 シェル(コンパイラ窓)の使い方?
83B.3 ライブラリブラウザの使い方?
84APPENDIX:C ocaml-modeの設定・使い方C.1 プログラム編集のためのコマンド?
85C.2 シェルバッファでのコマンド?

目次の難易度のマーク

 *印:難しい
 **印:さらに難しい
 最初は読み飛ばしてもOK

出版社


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-30 (火) 16:43:52 (1068d)