Haskell勉強会

関数型プログラミングの学習日記

プログラミング in OCaml

OCamlの本も持っているので、OCamlでも関数型プログラミングを勉強してみます。

 

 

 

目次

第1章 はじめに

 1.1 この本の読み方
 1.2 準備
 1.3 OCamlに関する情報源
 1.4 OCamlの特徴
 1.5 OCamlの歴史

 

第2章 いろいろな式を評価してみよう

 2.1 対話式コンパイラ
 2.2 基本データ型とその演算
 2.3 変数束縛による定義

 

第3章 関数型言語の醍醐味:関数

 3.1 簡単な関数の定義
 3.2 条件分岐と真偽値型bool
 3.3 局所的変数束縛とlet式
 3.4 構造のためのデータ型:組
 3.5 再帰関数
 3.6 高階関数

 

第4章 少ない手間で型付けをする:多相性と型推論

 4.1 多相的関数とパラメトリック多相
 4.2 型推論とlet多相
 4.3 Case Study:コンビネータ
 4.4 練習問題

 

第5章 再帰的多相的データ構造:リスト

 5.1 リストの構成法
 5.2 リストの要素へのアクセス:match 式とリストパターン
 5.3 リストを操作するさまざまな関数
 5.4 Case Study:整列アルゴリズム
 5.5 練習問題

 

第6章 データ構造をデザインする:レコードとヴァリアント

 6.1 レコード
 6.2 ヴァリアント
 6.3 ヴァリアントの応用
 6.4 Case Study:二分木
 6.5 Case Study:無限列
 6.6 練習問題

 

第7章 例外処理

 7.1 オプション型による例外処理
 7.2 raise式とtry式による例外処理
 7.3 exception宣言とexn型
 7.4 練習問題

 

第8章 書き換え可能なデータ構造と入出力を使った命令型プログラム

 8.1 unit型
 8.2 書き換え可能なデータ構造
 8.3 制御構造
 8.4 Case Study:参照を使ったデータ構造ーーキュー
 8.5 チャネルを使った入出力
 8.6 練習問題

 

第9章 モジュールによるプログラムの構造化

 9.1 ライブラリ・モジュールの使い方
 9.2 モジュール定義
 9.3 シグネチャを使った情報隠蔽と抽象データ型
 9.4 練習問題

 

第10章 バッチコンパイラと分割コンパイル

 10.1 バッチコンパイラによる実行可能ファイルの作成
 10.2 モジュール単位の分割コンパイル
 10.3 システム周りの関数・モジュール
 10.4 その他
 10.5 練習問題

 

第11章 モジュール関数:ファンクター

 11.1 ライブラリモジュールのファンクターとファンクター適用
 11.2 ファンクター定義
 11.3 ファンクターと情報隠蔽
 11.4 複数の引数をとるファンクター
 11.5 練習問題

 

第12章 OCamlの“O”:オブジェクト

 12.1 単純なクラス
 12.2 自分自身のメソッドを呼び出す
 12.3 継承によるクラスの拡張
 12.4 オブジェクトのための型付け
 12.5 より高度なクラス機能・型
 12.6 練習問題

 

第13章 ラベル付き引数とオプション引数

 13.1 ラベル付き関数を使う
 13.2 ラベル付き引数詳説
 13.3 オプション引数
 13.4 まとめ

 

第14章 多相ヴァリアント

 14.1 多相ヴァリアントの基本
 14.2 関数定義の拡張
 14.3 再帰的関数と多相ヴァリアント
 14.4 その他
 14.5 練習問題

 

第15章 GUI ライブラリ:LablTk

 15.1 「銀行窓口」を作ってみる
 15.2 ウィジェットの紹介
 15.3 ウィジェットの配置:Tk.pack関数とPackモジュール
 15.4 イベント処理の割り当て:bind
 15.5 その他
 15.6 練習問題

 

第16章 Case Study:お絵かきロジック

 16.1 お絵かきロジックとは?
 16.2 プログラム解説
 16.3 まとめ

 

あとがき

 

PPENDIX:A OCaml処理系などのインストール

 A.1 Windows環境へのインストール
 A.2 Linux環境へのインストール

 

APPENDIX:B OCaml Browserの使い方

 B.1 エディタの起動法・使い方
 B.2 シェル(コンパイラ窓)の使い方
 B.3 ライブラリブラウザの使い方

 

APPENDIX:C ocaml-modeの設定・使い方

 C.1 プログラム編集のためのコマンド
 C.2 シェルバッファでのコマンド

 

出版社情報

gihyo.jp

 

gihyo.jp

 

著者のサポートページ

プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで

 

著者紹介

五十嵐淳(いがらしあつし)

1973年生まれ。

2000年 東京大学大学院理学系研究科博士課程修了。

現在、京都大学大学院情報学研究科准教授。博士(理学)。

型システムなど、プログラミング言語の理論研究に従事している。

学部生時代にはStandard MLを勉強したが、数年後にOCamlに「改宗」して今に至る。

秘かに、スクリプト言語などで「背徳の型なしプログラミング」を楽しむこともある。

 

五十嵐 淳 (Atsushi IGARASHI)

 

書評

大学の授業で使われていたテキストを書籍化した本なので、まさに教科書であり、体系的まとまっていて分かりやすいと思います。

本書を参考にして、OCaml関数型プログラミングの作法を学んでみたいと思います。