Using_typesystem
言語の型システムを定義した場合、タイプチェッカーは自動的にそれをエディターで使用して、開いているノードをエラーと警告でハイライトします。また、エディターアクションやジェネレータークエリなど、クエリの型に関する情報を使用することもできます。ノードの型を使用することも、特定の型が別の型のサブタイプかどうかを知りたいこともあります。または、与えられた形式を持つ型のスーパータイプを見つけたいと思うかもしれません。
タイプ操作
type 操作を使用して、クエリ内のノードの種類を取得できます。<expr> .type を書くだけです。ここで、<expr> はノードに対して評価される式です。
推論規則および推論方法の中で型演算を 使用しないでください。推論規則は型の計算に使用され、型操作はすでに計算された型を返します。
サブタイプ式
ある型が別の型のサブタイプであるかどうかを調べるには、isSubtype 式を使用してください。isSubtype( type1 :< type2 ) または isStrongSubtype( type1 :<< type2 ) と書くと、タイプ 1 がタイプ 2 のサブタイプである場合、またはタイプ 1 がタイプ 2 の強いサブタイプである場合は、それぞれ true が返されます。
強制表現
強制発現の結果は、特定のタイプは、このタイプの指定されたフォーム(満足ある条件)を有するスーパータイプを有するかどうか、すなわち、所定の形式に強制することができるかどうかを言うブール値です。条件は、概念宣言への参照として記述することもできます。つまり、求めるスーパータイプはこの概念のインスタンスにする必要があります。またはパターンとして、目的のスーパータイプが一致する必要があります。
強制式は coerce( type :< condition ) または coerceStrong( type :<< condition ) と書かれています。ここで、condition は上記で説明したものです。
強制ステートメント
強制ステートメントはステートメントのリストで構成され、特定のタイプを 特定の形式に強制できる場合に実行されます。それは次のように書かれています:
型が条件を満たすように強制できる場合は最初の(if)ブロックが実行され、それ以外の場合は else ブロックが実行されます。型が強制変換されるスーパー型は、強制文の最初のブロック内で使用できます。条件がパターンであり、型が強制変換されるスーパー型の一部と一致するパターン変数が含まれている場合は、そのようなパターン変数を強制ステートメントの最初のブロック内で使用することもできます。
マッチステートメント
match ステートメントはノードをパターンと比較します。そのパターンの変数には、一致したノードまたはその子から対応する値が割り当てられます。
関連ページ:

型システム
言語のための型システムを定義する :このページでは、MPS 型システムについて詳しく説明します。最初の型システムの規則を定義する際に、さらに簡単に導入したい場合は、型システムクックブックをチェックしてください。コードから型システムを使用する方法をよく知りたい場合は、型システムを使うの章も参照してくだ...

型システムのデバッグ
型システムをデバッグするために、MPS は型システムトレースを提供します - それは型システムエンジンの中で起こる評価プロセスへのインサイトをあなたに与える統合された視覚的なツールです。自分で試してみる :型システムを簡単に試すことができるように、専用のサンプル言語を用意しました。MPS にバン...