RBS互換型
RigorはRBS構文で文書化されたすべての型形式をサポートします。この文書はRBS形式をRigorの解釈とRBS消去にマッピングする権威あるテーブルです。
ハッシュシェイプ(shape)消去アルゴリズムを含む完全な消去規則はrbs-erasure.mdにあります。RBSを超えるRigor専用の形式はrigor-extensions.mdにリストされています。予約済み組み込みリファインメント(refinement、篩型とも)名はimported-built-in-types.mdにあります。
形式テーブル
Section titled “形式テーブル”| RBS形式 | Rigorの解釈 | RBS消去 |
|---|---|---|
C、C[A] | 名前的インスタンス型 | 同じ |
_I、_I[A] | インターフェース型 | 同じ |
alias、alias[A] | エイリアス参照、必要に応じて展開 | 同じまたは展開されたエイリアス |
singleton(C) | シングルトンクラスオブジェクト型 | 同じ |
string、symbol、integer、true、falseリテラル | リテラルシングルトン型 | 同じ |
| `A | B` | ユニオン型(union type、合併型とも) |
A & B | インターセクション型(intersection type、交叉型とも) | 消去されたオペランドの後に同じ |
T? | `T | nil` |
{ key: T } | 既知キーのハッシュレコード | 同じ |
[A, B] | 固定アリティの配列タプル | 同じ |
| 型変数 | 境界と変性を持つスコープ型変数 | 同じ |
self | selfコンテキストでのオープン再帰レシーバー型 | RBSコンテキストが許す場合に同じ |
instance | classish-contextでの現在のクラスインスタンス型 | RBSコンテキストが許す場合に同じ |
class | classish-contextでの現在のクラスシングルトン型 | RBSコンテキストが許す場合に同じ |
bool | `true | false`のエイリアス |
nil | シングルトンnil値 | nil |
untyped | 動的型 | untyped |
top | 最大の静的値型 | top |
bot | 空型 | bot |
void | 戻り値位置の「使用しない」結果マーカー | 有効な場所ではvoid、そうでなければ診断付きでtop |
| proc型 | 呼び出し可能オブジェクト型 | 消去されたオペランドの後に同じ |
self、instance、class、voidはRBSにコンテキスト制限があります。Rigorは内部的により豊かなコンテキスト情報を保持できますが(MAY)、エクスポートされたRBSはそれらの制限を守らなければなりません(MUST)。
self、instance、class: それぞれのclassishまたはselfコンテキストでのみ有効。RigorはRBSが受け付ける場所でのみそれらを出力しなければなりません(MUST)。void: メソッドとprocの戻り値位置、およびインポートされたシグネチャからそれを持つジェネリックスロットで有効。値コンテキストルールとインポートされたRBSルールについてはspecial-types.mdを参照してください。
内部型が無効なRBSコンテキストでこれらのマーカーのいずれかを含む場合、消去パスは最も近い有効な保守的型に書き直し、精度損失を報告しなければなりません(MUST)。エクスポート中の精度損失の診断ポリシーはdiagnostic-policy.mdにあります。
個別形式の注記
Section titled “個別形式の注記”オプショナル
Section titled “オプショナル”T?は内部的にT | nilに正規化されます(normalization.md参照)。エクスポート時、Rigorは有効なときはT?構文を優先すべきです(SHOULD);そうでなければ明示的なユニオンにフォールバックします。
レコードとタプル
Section titled “レコードとタプル”RBSレコード({ key: T })とタプル([A, B])は正確な形式として受け付けられます。Rigorの内部ハッシュと配列シェイプ(structural-interfaces-and-object-shapes.md参照)はこれらのRBS形式を必須/オプショナル/追加キーポリシーと読み取り専用マーカーで拡張します;それらの拡張は決定論的に消去されます(rbs-erasure.md参照)。
RBSからの型変数の境界と宣言サイトの変性は保持されます。メソッド本体を通じたジェネリック保持 — 例えばメソッドが受け取ったのと同じパラメータオブジェクトを返すとき[S < _RewindableStream] (S stream) -> Sを推論する — はRigorの推論挙動であり、新しい表面形式ではありません。structural-interfaces-and-object-shapes.mdを参照してください。
bool対真偽性
Section titled “bool対真偽性”boolはtrue | falseのリテラルエイリアスです。Rubyの真偽性は任意の値を受け付けます。Rigorは真偽性をフロー述語としてモデル化します。boolに広げることはしません。special-types.mdとcontrol-flow-analysis.mdを参照してください。
untyped
Section titled “untyped”untypedはRBS境界で両方向に保持されます。内部精密表現はDynamic[top]で、完全な代数はvalue-lattice.mdにあります。RBSからRigorへのラウンドトリップとその逆は正確です。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.