私の質問は、Standard MLのモジュールシステムとOCamlモジュールシステムとの間に相違があるかどうかです。 OCamlはfunctor、ascriptionsなどのサポートをしていますか?SMLには?Standard MLのモジュールシステムとOCamlモジュールシステムの違いは何ですか?
答えて
機能的にも意味的にもいくつかの違いがあります。
SMLをサポートしていなく、OCamlの特長:種類以上
- 透明署名帰属
- モジュールレベル
let
- 対称共有制約ファンクタのため
- シンタックスシュガーと
値特徴OCaml 4はSMLを持っていません:
- 高次ファンクタ
- 再帰モジュール
- ローカルモジュール
- ネストされたファーストクラスとして
- モジュール署名
- 一般的なモジュールの共有(
sig with module A = M
) module type of
いくつかのSML実装では、これらを拡張機能として提供しています。 (SML/NJ、Alice ML)、モジュール共有(SML/NJ、Alice ML)、ネストされたシグネチャ(Moscow ML、Alice ML)などの高次ファンクタ(SML/NJ、モスクワML、アリスML)、ローカルおよびファーストクラスのモジュール(モスクワML、アリスML) 、および再帰的モジュール(モスクワML)。
セマンティクス・ワイズ、最大の違いは特にファンクタに関して、タイプ等価の治療である:SMLで
、ファンクタは2回同じファンクタを適用することを意味し、生成的あります同じ議論は常に新鮮な型をもたらす。
を編集する:OCaml 4には、任意でファンクタを生成させる機能が追加されました。
OCamlでは、ファンクタはのアプリケーションです。つまり、同じファンクタを同じ引数に2度適用すると(追加の構文上の制限に加えて)同等の型が再現されます。このセマンティクスはより柔軟ですが、抽象化を破ることもできます(たとえば、this paperのセクション8を参照)。
OCamlは、シグネチャの純粋に構文上の概念を持ちます。つまり、型の等価性を型システムで表現できず、静かに破棄または分割されます(例えば、驚くべき例としてthis bugを参照)。
編集:OCamlの4.02は、参照バグの特定の例を修正するために起こる「モジュールエイリアス」のための特別なセマンティクスを追加するが、構文署名の一般的な制限が持続します。
もう一つの大きな違いは、OCamlでのモジュール型システムが原因SMLが許可されていません抽象署名、その許可に、(すなわち、型チェックが終了しない場合があります)決定不能であるということです。
- 1. モジュールシステムとモジュールフォーマットの比較
- 2. ES6クラスとモジュールシステムのスコープ
- 3. 理由モジュールシステム
- 4. Angular2モジュールシステム(TS付)
- 5. Javaの9モジュールシステムでのJava 9
- 6. モジュールシステムを使用したC
- 7. Java 9モジュールシステムをAntで使用する
- 8. 活字体「なし」のモジュールシステムを構築するには、「活字体ビルド - >モジュールシステム」の下
- 9. 錆のインポート/モジュールシステムはどのように機能しますか?
- 10. Paypal Payments StandardとPaypal Express Checkoutの違いは何ですか?
- 11. Sylius/SyliusとSylius/Sylius-Standardの違いは何ですか?
- 12. グローバルをエクスポートし、TypeScriptモジュールシステム経由で定義しますか?
- 13. なぜSMLとOCamlはMLの方言と見なされますか? MLの定義は何ですか?
- 14. LevenshteinモジュールはNodeJSモジュールシステムとどのように相互作用しますか?
- 15. この3行のForthモジュールシステムはどのように機能しますか?
- 16. max pairs function standard ml
- 17. ECMA6モジュールシステムは、ダウンロードされた生コードの量を減らしますか?
- 18. Oracle Express Edition(XE)とStandard Edition(SE)のPL/SQL APIの違いは何ですか?
- 19. Elm(ランタイムチェックと比較して)コンパイル時の特定のモジュールシステムの指定
- 20. Pythonのモジュールシステム内で命名の衝突を避けるにはどうすればよいですか?
- 21. Java 9モジュールシステムがMavenに統合されると、自動モジュールの処理方法
- 22. spark mllibとspark mlのベクトル実装の違いは何ですか?
- 23. Google CloudのCloud ML EngineとCompute Engineの違いは何ですか?
- 24. 型メンバーを持つオブジェクト:Scalaのオブジェクトとモジュールシステムは何ですか? (パス依存型のOdersky論文を理解しようとしています)
- 25. VirtualizingStackPanelのVirtualizationModeプロパティのRecycling/Standardの実際の違いは何ですか?
- 26. Typescript別のtsファイルをインポートするためのモジュールシステムVisual Studio 2015 Update 3
- 27. .NET Platform Standardのプラットフォームは何ですか?
- 28. OCamlはmlファイル内のモジュールを参照しています
- 29. これは優れています標準的なMLまたはOCaml
- 30. Ocamlの意味は何ですか?
次のクリーンアップでモジュールシステムに関する「最近の」(主にあなたの)研究の妥当な開始を前提として、将来の*モジュールシステム、あるいはより正確にはこれらの機能セットがどのように変化するかについて、 ML言語の繰り返し。それは、非常に興味深い答えになります。 – gasche
私はその疑問をピギーバックするのは不適切だと感じました;)。私の個人的な答えは、私が上にリンクしているF-ingモジュールの論文の中にあるものです。リストされたすべての機能をクリーンな(かなり)簡単な方法(生成的および応用的なファンクタを含む)それらについては私はあまり確信していません。 OCamlの再帰的モジュールは、私の好みではあまりにもアドホックで制限されていますが、包括的なアプローチは、MixMLの論文で説明しているように、MLモジュールを構成するものの大部分を放棄することになります。陪審員はまだそれが価値があるかどうかは分からない。 –
@AndreasRossberg MixMLの文脈で大部分のMLモジュールを放棄することが何を意味するのか分かりませんが、MLモジュールはMixMLスペクトルの終点とみなすことができます。 (私が間違っていれば、モジュールを構築するための基本的なアイデアはパラメータ化ではなく、震動であった) – fedvasu