答えて

7

答えは簡単です。タイプに表示される可能性があるからです。その結果、彼らはタイプレベルで生きなければなりません(さもなければあなたは依存型が必要になります)。彼らはタイプレベルで生活しているため、種類によって分類されます。

+0

この回答は私の頭の中にすべてを入れています。ありがとう! – Fixpoint

7

レコードシステムは、値、型、(多分)種類の規則を定義します。使用されるルールは、設計されるタイプシステムと、設計者が達成したいものによって異なります。

など。 Haskellで、レコードレーベルは、以下のとおりです。

  • 値(アクセサ関数)
  • は、これらの値は、型(例えばRecord -> Int
  • を持っているこれらのタイプは、種類(*

その他の記録システムを持つことができます異なる目的のためにタイプまたは種類のシステムを使用してください。

ラベルを別の種類に置くことによって、タイプチェッカーは特殊なルールを扱うことができます。自動レンズ、または汎用の機能には当てはまらないレコード構成(おそらく全体)に関係するプルーフが含まれます。

Haskellで種類システムを使用する例は、「ボックス化されていないタイプ」の使用です。定期的にで混合からアンボクシングの種類を維持するために定期的な値

  • 異なる結合形態(例えば、ヒープ上に割り当てすることはできません)
    • 異なるランタイム表現:これらは、持っているタイプですコンパイラがその分離を追跡することを可能にする異なる種類が与えられます。

      レコードラベル名には、異なる種類の記号を使用しなければならないという魔法はありません。これは、言語設計者が選択できる選択肢です。また、Urなどの依存型言語Twelf、それは有用な区別になります。

    +0

    ありがとう、ボックス化されていないタイプの例は啓発です – Fixpoint

    関連する問題