1-1. 関数プログラミングとは
関数プログラミングをするということは、関数型プログラム言語を
知るということである。現在広く使われている関数型プログラム言語
には、以下の3種類がある。
- Lisp系統; Common Lisp や Scheme; 静的な「型」の概念がない
- ML 系統; SML や OCaml や F#; 静的な「型」をもつ。値呼び計算方式
- Haskell; 静的な「型」をもつ、名前呼び計算方式
また、最近では、「オブジェクト指向に関数型の特徴を取りいれた」
といったハイブリッド型のプログラム言語も多い。
筑波大学の卒業生である、まつもとさんが作った Ruby のほか、
twitter の記述言語として有名になった Scala もそのようなプログラム言語
である。
ここでは、最も代表的な関数型プログラム言語の1つとして、
OCaml を取りあげる。OCaml は ML というプログラム言語(の系統)の
1つであり、SML (Standard ML) に対抗して、フランス INRIA で開発された
プログラム言語である。
世界中で使われているプログラム言語であり、
下記のリンクからもわかるように、日本のプログラム言語の研究者の多くも
使っている。
OCaml の資料
OCaml のチュートリアル的なテキストは
インターネット上にもいくつかあるが、
日本語による入門的な書籍が2007年に3冊刊行された。
これらのうち、自分にとって読みやすそうな1冊を買うことを
勧める。
- 書籍: 「プログラミングの基礎」
浅井健一著, サイエンス社,
ISBN 978-4-7819-1160-1 (2007年).
- 書籍: 「プログラミングin OCaml〜関数型
プログラミングの基礎から GUI構築まで」、
五十嵐淳著、技術評論社,
ISBN 978-4-7741-3264-8, (2007年).
- 書籍: 「入門OCaml」、OCaml-Nagoya著,
毎日コミュニケーションズ、
ISBN 978-4-8399-2311-2 (2007年).
また、無料のチュートリアルテキストもインターネット上に
いくつもある。そのいくつかをあげる。(この他にも多数あるので、
自分で探してほしい。)
どの程度知っておくべきか?
OCaml言語は極めて面白い機能がたくさんあり、知れば知るほど楽しくなる。
最初の第一歩として、この実験で必要になる範囲は以下のとおりである。
- 変数、if-then-else, fun, let, let-rec, match-with
- データ型: int、string, list、組(タプル)の型、関数の型、type定義
- ファイルの読み込み、プリント, 例外 (exception)
たったこれだけで、たいていのことは書けてしまう、という点に
関数プログラミングの偉大さがある。
逆に、今回の実験では必ずしも必要としない(知っておくと便利だが、
知らなくても何とかなる)範囲は以下の通りである。
- 多相型など高度なデータ型
- モジュールに関する機能
- オブジェクト指向の機能
トップ,
次へ.
亀山 幸義