Previous Up Next
Chapter 1 はじめに

1.1 関数型言語 ML と Objective Camlについて

プログラミング言語 ML は元々,Edinburgh LCF という,計算機による証明記 述システムのために開発されてきた.証明記述システムでは,証明そのものを 記述する言語(これを)と,証明を操作する(証明をどのような手順で行なうか などを制御する)ための言語が使われている.前者を対象言語---object language---と呼び,後者をメタ言語---meta language---と呼ぶ.ML はこの 証明操作用のメタ言語(頭文字をとって ML)から発展してきた言語で,関数型 プログラミングと呼ばれるプログラミングスタイルをサポートしている.MLは 核となる部分が小さくシンプルであるため,プログラミング初心者向けの教育 用に適した言語であると同時に,大規模なアプリケーション開発のためのサポー ト(モジュールシステム・ライブラリ)が充実している.MLの核言語は型付き λ計算と呼ばれる,形式的な計算モデルに基づいている.このこと は,言語仕様を形式的に(数学的な厳密な概念を用いて)定義し,その性質を厳 密に「証明」することを可能にしている.実際,Standard ML という標準化さ れた言語仕様 [4]においては,(コンパイラの受理する)正しいプロ グラムは決して未定義の動作をおこさない,といった性質が示されている.

この演習で学ぶのは ML の方言である Objective Caml という言語である.Objective Caml は INRIA というフランスの国立の計算機科学の研究所でデザイン開発された 言語で,Standard ML とは文法的に違った言語であるが,ほとんどの概念・機 能は共有している.また,Objective Caml では Standard ML には見られない,独自 の拡張が多く施されており,関数型プログラミングだけでなく,オブジェクト 指向プログラミングもサポートしている.またコンパイラも効率のよいものが 開発されている.

1.1.1 ML・Objective Caml の特徴

ML の特徴としては,以下のようなものが挙げられる. また,Objective Caml 独自の特徴としては, などが挙げられる.

1.2 参考書,資料,マニュアル

Objective Caml のマニュアル [3] (英語)は よりオンライン利用が可能なようにしてある. また から,FAQ などの文書,処理系のソース・コンパイル済 バイナリ,Objective Caml を使ったソフトウェアなどが利用できる. Objective Caml は,Caml という言語を拡張して,オブジェクト指向プログラミング の機能などを加えたものであるが,本来の Caml の教科書として [1]が出版されている.また,フランス語の Objective Caml の本が O'Reilly から出版されているが,現在,英訳プロジェクトが進行中で,オン ラインでhttp://caml.inria.fr/oreilly-book/ より利用可能になって いる.一方,Standard MLの教科書はそれに比べれば多数出版されている [5, 6, 7]が,Objective Camlとは文法を含め微妙に異なるので ML 入門者はかえって混乱するかもしれない.

[2]は,再帰/型の概念を対話形式で平易に 解説している一風変った本である.読みやすいので,この実験で興味を持ったら読 んでみると面白いだろう.

1.3 環境設定

環境設定は,Emacs エディタでの プログラム編集/実行のための設定を行う.

Emacs の設定

Emacs (Mule) 上で Objective Camlプログラムの編集を助けるプログラム tuareg-mode () が~igarashi/lib/elisp にインストールされ ている.以下は ~/.emacs に加える設定である.
;; append-tuareg.el - Tuareg quick installation: Append this file to .emacs.

(setq load-path (cons "~igarashi/lib/elisp/tuareg-mode" load-path))

(setq auto-mode-alist (cons '("\.ml\w?" . tuareg-mode) auto-mode-alist))
(autoload 'tuareg-mode "tuareg" "Major mode for editing Caml code" t)
(autoload 'camldebug "camldebug" "Run the Caml debugger" t)

(if (and (boundp 'window-system) window-system)
    (when (string-match "XEmacs" emacs-version)
        (if (not (and (boundp 'mule-x-win-initted) mule-x-win-initted))
            (require 'sym-lock))
        (require 'font-lock)))
Emacs を起動し直して,.ml という拡張子を持つファイルを開いたときに モードラインに (Tuareg) と表示されることを確認すること.

なお,以上の設定は,授業WWWページの授業スケジュール欄の環境設定 (http://www.sato.kuis.kyoto-u.ac.jp/~igarashi/class/isle4/configure.txt) よりオンラインで利用できるので,カット&ペーストするとよいだろう.




Previous Up Next