http://nice.sf.net/

 class Person {
  String : word;
  String : say();
 }

 say(p@Person) {
   return p.word;
 }

 void main(String[] args) {
   let p = new Person(word: "Hello, world");
   System.out.prinln(p.say());
 }

JAVAの拡張だけあって、JAVAで出来ることは殆どすべて出来る。(多分)
実際、niceのコンパイラが生成するのはjavaのclassファイル。

  • Niceのソースファイルの拡張子は .nice
  • main関数は、特定のクラスに属さ無くても良い。
  • class定義の外でクラスのメソッドを追加できる。(dispatch)
  • コンストラクタはない。代わりに名前付パラメータを引数にする。

コンパイルの仕方がちょっと特殊なのでメモしておく。

 # ソース・ディレクトリを作成。
 # 名前は何でも良いが、nice/langがコンパイル時に作られるので、
 # 纏めておくといいかもしれない。分けたい場合は他の名前にする。
 > mkdir -p nice/my/program

 # ソースの作成/保存
 vi ./nice/my/program/Person.nice

 # コンパイル
 > nicec --source-path=nice my.program

 # jarファイルの作成
 > nicec --source-path=nice -a program.jar my.program

 # 実行(javaと同じ)
 > java -jar program.jar