1-1. 関数プログラミングとは
関数プログラミングをするということは、
関数型プログラム言語を知るということである。
現在広く使われている関数型プログラム言語には、主に以下の3種類がある。
- Lisp系; Common Lisp や Scheme; 動的な型付け、値呼び計算。
- ML系; SML や OCaml や F#; 静的な型付け、値呼び計算。
- Haskell; 静的な型付け、必要呼び計算。
以上のものは、関数型言語としての機能が主たるものであるが、
最近では、種々のプログラム言語に関数型の機能が取り込まれている。
たとえば、筑波大学の卒業生である、まつもとさんが作った Ruby のほか、
X (twitter) の記述言語として有名になった Scala や、
ウェブブラウザでの標準的言語である JavaScript は、
オブジェクト指向言語をベースとして関数型言語の機能を取り込んだものになっている。
ここでは、最も代表的な関数型プログラム言語の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)、時間の計測
たったこれだけで大抵のことは書けてしまう、という点に関数プログラミングの偉大さがある。
逆に、今回の実験では必ずしも必要としない(知っておくと便利だが、
知らなくても何とかなる)範囲は以下の通りである。
- 多相型など高度なデータ型
- モジュールに関する機能
- オブジェクト指向の機能
トップ,
次へ.
亀山 幸義