PR

OCamlのすごさはもっと知られるべき

 この特集では、オブジェクト指向プログラミングと関数型プログラミングの両方に対応した言語を使うことにしました。そうした言語であれば、それぞれのメリットや使うべき場面が明確になるからです。

 候補は2つありました。「Scala」と「OCaml」です。Scalaはオブジェクト指向言語であるJavaの仮想マシンで動作するように実装された関数型言語です。一方、OCamlは関数型言語であるMLにオブジェクト指向の機能を追加したものです。

画面●WindowsのコマンドプロンプトでOCamlを動かしているところ
[画像のクリックで拡大表示]
画面●WindowsのコマンドプロンプトでOCamlを動かしているところ

 最近のトレンドを考慮するとScalaを取り上げてもよかったのですが、今回の特集ではあえてOCamlを選択しました。OCamlの優れた特徴はもっと知られるべきだと思ったからです。関数型言語というとまず名前が挙がるのは「Haskell」であり、OCamlはその陰に隠れがちです。OCamlの名前を知っている人でも「マイルドなHaskell」といったイメージを持っている人は多いのではないでしょうか。しかし、OCamlは意外にとがったところもある言語です。

 個人的にOCamlがすごいと思うのは、ポリモーフィズムの実現方法です。ポリモーフィズムといえば、継承やインタフェースを利用するJavaのポリモーフィズムやダックタイピングを利用するRubyのポリモーフィズムなどがあります。

 OCamlのポリモーフィズムもJavaと同じように静的型を利用します。ただし、型宣言も継承もインタフェースも必要ありません。OCamlが備える型推論の機能によってポリモーフィズムが自動的に実現されてしまうのです(ITproの参考記事「関数型言語とオブジェクト指向,およびOCamlの"O"について」)。型推論は適切な型を言語側で推論してくれる機能なので当然といえば当然ですが、Javaのやり方に慣れている人にとっては驚きでしょう。