Nemerle
おそらくNemerleの最も重要な特徴は、オブジェクト指向プログラミングと関数型プログラミングの両方を混在可能であるということであろう。プログラムのトップレベルではオブジェクト指向の構造を用いるが、メソッド本体には関数型のスタイルを用いることもできる。これは幾つかのプログラムにおいて非常に便利に機能する。以下に特徴的な機能を示す。
強い型推論
マクロによる柔軟なメタプログラミング
(C#やJava、C++のような文法の)オブジェクト指向プログラミング
(ML、OCaml、Haskellのような文法の)関数型プログラミングの諸機能: 高階関数 パターンマッチング 代数的データ型 ローカル関数 タプルと匿名型 関数の部分適用
メタプログラミング機能はコンパイラの高度な拡張を可能としており、プログラマの負担を可能な限り軽減しつつ、ドメイン固有言語の組み込み、部分評価、アスペクト指向プログラミングなどを可能にしている。
また、ジェネリックプログラミングやラムダや拡張メソッドなどといったCLIの全ての機能を利用することができ、.NETのライブラリをC#と同じくらい(あるいはそれ以上に)簡単に扱うことも可能である。
以下では、これらの機能をNemerle中でどのように利用できるかをいくつかの例を挙げて説明する。