1

Rascal のドキュメントによると、言語は静的に型付けされています。ただし、型エラーは実行時にのみ報告されます。

たとえば、このモジュールを作成すると、int 変数に実数を割り当てているため、型エラーが発生することが予想されます。

module Example

void example() {
  int x = 1.0;
  println(x);
}

モジュールを REPL にインポートし、最後に関数を実行すると:

rascal>import Example;
ok
rascal>example()
|project://Test/src/Example.rsc|(39,7,<4,6>,<4,13>): Expected int, but got real
☞ Advice
4

2 に答える 2

3

ドキュメンテーションは、Rascal の計画よりも進んでいます。Rascal には静的にチェックできる型システムがありますが、型チェッカーはまだ統合されていません。

現在、インタープリターは実行時に型をチェックしています。レポートされるエラー メッセージには、「静的タイプ」のみが含まれていることに注意してください。インタープリターは、コードの抽象的な解釈と具体的な解釈 (実行) の両方を同時に行っています。これにより、各構造の解釈と型チェックのコードが密接に織り込まれているため、言語を急速に進化させることができました。

型チェック段階を導入するとき、型と解決された名前を使用してインタープリターの速度を上げ、インタープリターのコードを再び単純化し、もちろんエラーをより早くプログラマーに伝えたいと考えています。

于 2013-04-23T09:00:54.940 に答える
1

Rascal には、Rascal 自体に記述された静的型チェッカーがあります。ほとんどの言語をカバーしています (現在サポートされていない機能はキーワード パラメータだけです)。これを使用するには、(Rascal プラグインを使用して) Eclipse で開いた Rascal ファイルを右クリックし、[Experimental] を選択してから [Run static checker] を選択します。メニュー名が示すように、これは実験的なものです。問題が見つかった場合はお知らせください。

于 2013-04-23T08:45:31.463 に答える