関数型言語とオブジェクト指向の融合

関数型言語といえばまず、Lispがありました。

そして、SMLがありHaskellがあります。Cleanなんてのもありました。

LispはCLOSというオブジェクト指向Common Lisp (CL) のオブジェクト指向プログラミング機能があります。CLOSはRubyに影響を及ぼしているようです。

SMLからCamlが生まれ、Camlをオブジェクト指向で拡張したOCamlが産まれました。OCamlからはさらに、F#が派生しています。
OCamlオブジェクト指向の拡張はレコードを拡張してオブジェクト指向に使おうとしています。

Lispにアルゴルシンタックスをという意味でDylanが生まれ、その後Nemerleが産まれました。

Scalaは、純粋なオブジェクト指向言語でありながら関数型言語の代数データ型をクラスの継承で表したり、ScalaZといったHaskellの成果を持ち込むようなライブラリも用意されていてよく使われています。

HaxeActionScript2.0のフリーのコンパイラであるMTASCの後継言語として作成されている言語ですが、完全ではありませんが着実に関数型言語の機能がついて来ています。

Rustはモジラが開発している言語ですがそろそろ1.0が出そうです。
Haskellの型クラスから影響を受けているようです。

GoもまたRustと同じようにHaskellの型クラスのような機能を持ち合わせています。

このように、関数型言語オブジェクト指向の融合は着実に進んで来ています。