型指定をどうするか

型指定を望む人は多いと思われるので、xtalには型指定を入れようと思っています。ただ、入れるとしても実行時に型チェックを入れるぐらいのサポートになりそうで、本当にそんなのを入れる価値があるか悩んでます。

型指定の文法はC言語と同じようにする予定です。

Int value = foo(); // 実行時に value is Intがtrueになるかチェックが入る。

型指定の部分は式を置くことができるので、C++でいうテンプレート、JavaでいうGenericsのような記述も可能になる予定です。

// 要素の型チェックをする配列
TArray: fun(Type){
  return class(Array){ // 普通のArrayを継承する
    push_back: method(Type value){ // 型チェックをするpush_back
      return Array::push_back(value);
    }
  }
}

IntArray: TArray(Int); // Int専用配列

iary: IntArray();
iary.push_back(10); // Good!
iary.push_back(10.5); // Bad!

うーん、とりあえず入れてみるか…。