Previous Up Next
Chapter 1 はじめに

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

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

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

1.1.1 Objective Caml の特徴

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プログラムの編集を助けるプログラムが ~igarashi/lib/elisp にインストールされている.以下は ~/.emacs に 加える設定である.
;;; caml-mode
(setq load-path (cons "~igarashi/lib/elisp/ocaml-mode" load-path))
(setq auto-mode-alist
          (cons '("\\.ml[iylp]?$" . caml-mode) auto-mode-alist))
(autoload 'caml-mode "caml" "Major mode for editing Caml code." t)
(autoload 'run-caml "inf-caml" "Run an inferior Caml process." t)
(if (and (string-match "^19" emacs-version) window-system)
    (require 'caml-hilit))  ;; for Mule
(if (and (string-match "^20" emacs-version) window-system) 
    (require 'caml-font))   ;; for Emacs20
Emacs を起動し直して,.ml という拡張子を持つファイルを開いたときに モードラインに (caml) と表示されることを確認すること.




1
本実験ではオブジェクトは使いませんが

Previous Up Next