しばらく前にHaskell拡張機能の1つ(リンクを見つけることができません)とrecently in Ur私は、レコードフィールドの名前が種類を形成していることがわかりました。タイプ抽象化がそれらのために十分でない理由を誰かが説明できますか?名前が種類だけでなく種類を形成する理由を教えてください。
答えて
答えは簡単です。タイプに表示される可能性があるからです。その結果、彼らはタイプレベルで生きなければなりません(さもなければあなたは依存型が必要になります)。彼らはタイプレベルで生活しているため、種類によって分類されます。
レコードシステムは、値、型、(多分)種類の規則を定義します。使用されるルールは、設計されるタイプシステムと、設計者が達成したいものによって異なります。
など。 Haskellで、レコードレーベルは、以下のとおりです。
- 値(アクセサ関数)
- は、これらの値は、型(例えば
Record -> Int
) - を持っているこれらのタイプは、種類(
*
)
その他の記録システムを持つことができます異なる目的のためにタイプまたは種類のシステムを使用してください。
ラベルを別の種類に置くことによって、タイプチェッカーは特殊なルールを扱うことができます。自動レンズ、または汎用の機能には当てはまらないレコード構成(おそらく全体)に関係するプルーフが含まれます。
Haskellで種類システムを使用する例は、「ボックス化されていないタイプ」の使用です。定期的にで混合からアンボクシングの種類を維持するために定期的な値
へ
- 異なるランタイム表現:これらは、持っているタイプですコンパイラがその分離を追跡することを可能にする異なる種類が与えられます。
レコードラベル名には、異なる種類の記号を使用しなければならないという魔法はありません。これは、言語設計者が選択できる選択肢です。また、Urなどの依存型言語Twelf、それは有用な区別になります。
ありがとう、ボックス化されていないタイプの例は啓発です – Fixpoint
- 1. websocket onmessageのパラメータの種類を教えてください。
- 2. 多形ジェネリック型の理由と種類
- 3. スクリーンリーダーで「1of7」/「2of7」種類の情報を入力する方法を教えてください。
- 4. 選択するツリーデータ構造の種類を決定する方法を教えてください。
- 5. 種類署名
- 6. Codec.Pictureで読み込んだDynamicImageの種類を教える方法
- 7. FederatedAuthentication.SessionAuthenticationModuleをNULLに戻す理由を教えてください。
- 8. CSSクラスが適用されない理由を教えてください。次
- 9. Javaでパラメータ化された型を使用しないでその種類を参照してください
- 10. テキストエディタが貼り付けられたコードのインデントを変形する理由を教えてください。
- 11. (.net)デザインの種類の種類
- 12. Enumの種類Enumの種類
- 13. 異なる種類
- 14. 異なる種類
- 15. 種類
- 16. UIAlertViewでMonoTouchランタイムがクラッシュする理由を教えてください。
- 17. SymfonyにデフォルトのURLマッピングがない理由を教えてください。
- 18. レイアウトデザイナーのコンテンツがエミュレータに合わない理由を教えてください。
- 19. このdatepickerが動作しない理由を教えてください。
- 20. 私の箱にインストールされているJDK/JREの種類をプログラムで判断してください
- 21. 多くを選択しています...種類が
- 22. タイプ理論:タイプの種類
- 23. あいまいな種類の組成
- 24. リアルタイムに近いさまざまな種類のクライアントにデータをプッシュする方法を教えてください。
- 25. ValueInjecter異なる種類/プロパティ名
- 26. 種類は、「種類」タイプとのトラブルを有するタイプのラムダ
- 27. "X509_verify"関数が-1を返す理由を教えてください。
- 28. のStructureMap:ネストされた依存関係の具体的な種類を選択してください
- 29. 同じデータだが異なる種類の変数の命名規則
- 30. nodejsを使用しているファイルの種類を確認してください。
この回答は私の頭の中にすべてを入れています。ありがとう! – Fixpoint