Sorum şu: Standart ML modül sistemi ile OCaml modül sistemi arasında fark var mı? SML'nin sahip olduğu tüm mucit, kayıt vb.Standart ML modül sistemi ile OCaml modül sistemi arasındaki fark nedir (varsa)?
cevap
Anlamsal olarak yanı sıra bazı özellik farkları vardır.
- şeffaf imza yakıştırma
- modül düzeyi
let
- simetrik paylaşım kısıtlamaları
- sözdizimsel türleri üzerinde functors için şeker ve değerleri
:
SML destekleri ancak OCaml Özellikleri Özellikler OCaml 4, SML değil:
- yüksek mertebeden fanktorlar
- özyinelemeli modüller
- yerel modüller
- iç içe birinci sınıf olarak
- modülleri imzalar
- genel modül paylaşımını (
sig with module A = M
) module type of
Bazı SML uygulamaları bunlardan bazılarını uzantı olarak sağlar, ancak: ör. daha yüksek mertebeden hünerler (SML/NJ, Moskova ML, Alice ML), yerel ve birinci sınıf modüller (Moskova ML, Alice ML), modül paylaşımı (SML/NJ, Alice ML), iç içe geçmiş imzalar (Moskova ML, Alice ML) ve özyinelemeli modüller (Moskova ML). SML olarak
, functors generatif olan, bu iki kez aynı functor uygulanması anlamına gelir:
Semantik-bazlı, en büyük fark, özellikle functors ile ilgili olarak, tip denklik tedavisindedir Aynı argüman her zaman taze tipler verir.
Düzenleme: OCaml 4 isteğe bağlı olarak jeneratörler üreteci yapma özelliğini ekledi.
OCaml olarak, functors aynı değişken (artı ek sözdizimsel kısıtlamalar) için iki kez aynı functor uygulayarak eş türleri üretir, yani uygulamalı bulunmaktadır. Bu semantik daha esnektir, fakat aynı zamanda soyutlamayı da kırabilir (örneğin, this paper, Bölüm 8'de verdiğimiz örneklere bakınız). OCCAL, tamamen sözdizimsel bir imza kavramına sahiptir; bu, belirli tip eşdeğerlerinin, tip sistem tarafından ifade edilemediği ve sessizce düştüğü veya ayrıldığı anlamına gelir (bkz. Örneğin, bir şaşırtıcı örnek olarak this bug).
Düzenleme: OCaml 4,02 başvurulan hata belirli örneğin sorununu gidermek başına "modül takma adları", özel bir semantik eklendi ama sözdizimsel imzaların genel sınırlama devam etmektedir.
başka dikkate değer bir fark ocaml en modül tipi sistemi nedeniyle SML izin vermez soyut imzalar, onun iznine, (yani, tip kontrolü sona olmayabilir) undecidable olmasıdır.
- 1. Göreli dosya sistemi Modül içindeki yazma yolu
- 2. OCaml: Modül kurun
- 3. Node.js'de yerel ve global modül arasındaki fark nedir? Yerel ve global modül ne zaman kullanılır?
- 4. Düğüm JS standart modül geçersiz kılma
- 5. Satır Açıklamaları Standart ML
- 6. Ocaml içindeki modül bağlanırken hata oluştu
- 7. Temel SDK ile Dağıtım Hedefi veya Dağıtım İşletim Sistemi Sürümü arasındaki gerçek fark nedir?
- 8. Standart kitaplık ve standart şablon kitaplığı arasındaki fark nedir?
- 9. modül
- 10. Node.js ile Dosya Sistemi Kökünü Belirleme
- 11. Perl için bir kuyruklama sistemi
- 12. = ile mysql arasındaki fark nedir?
- 13. Referans ile & * arasındaki fark nedir?
- 14. difftime ile '-' arasındaki fark nedir?
- 15. arasındaki fark nedir?
- 16. Smalltalk'taki fark ile Smalltalk arasındaki fark nedir?
- 17. Ironpython ile çalışan modül listesi
- 18. TypeScript Oluşturma Modülü "Yok" Sisteminin Sistemi,
- 19. linux kernel alt sistemi dm-crypt ve ecryptfs arasındaki fark nedir?
- 20. Döşeme ve dost sistem arasındaki fark nedir?
- 21. iki nesne arasındaki aynı koordinat sistemi C#
- 22. Ember üretim kuruluşu, modül bulunamadı. modül adı nedeniyle '/' yerine '/' içerir
- 23. üretim sistemi
- 24. Django izin sistemi ile karışıklık
- 25. jQuery - işletim sistemi ve işletim sistemi sürümünün algılanması
- 26. Kukla - diğer modül manifolduna göre modül kurun
- 27. ImportError: Dinamik modül modül ihracat fonksiyonunu (PyInit__caffe)
- 28. C++ TR2 Dosya sistemi kitaplığının durumu nedir?
- 29. FasterXML Jackson 2 SerializerBase sınıflandırma sistemi nedir?
- 30. kullanıcı yönetim sistemi
Birazdan * geleceğin * modül sistemlerini kullanma şansına sahip olmanız gerektiğini düşünüyorum, ya da daha net olarak, bu özellik kümelerinin bir sonraki temizlikte modül sistemlerine ilişkin "son" (çoğunlukla sizinki) araştırmanızın makul bir başlangıcını değiştirecek şekilde değişmesi ML dilinin tekrarı. Bu çok ilginç bir cevabı * son derece ilginç bir cevaba dönüştürür. – gasche
Ben bunun için soruya piggyback uygunsuz hissettim;). Benim kişisel cevabım, yukarıda bağladığım F-ing modülleri kağıdında oldukça fazla olurdu - listelenen özelliklerin tümünü temiz ve (oldukça) basit bir şekilde (hem üretken hem de uygulamalı funktörler dahil), eksi özyinelemeli modülleri de içeriyor. Onlar için çok emin değilim. OCaml'ın özyinelemeli modülleri benim için çok fazla geçici ve sınırlı, fakat kapsamlı bir yaklaşım sonuçta MixML kağıdında tanımladığımız gibi ML modüllerini oluşturan şeylerin büyük bir kısmının terk edilmesine yol açacaktır. Jüri hala buna değip değmeyeceği konusunda. –
@AndreasRossberg MixML bağlamında büyük kısım ML modüllerini terk ederek ne kastettiğinizden emin değilim, belirtmiş olduğunuz kağıtta ML modüllerinin MixML spektrumunda son noktalar olarak görülebileceğini vurgulamıştım. (Beni yanlış yaparsam, yapı modülleri için temel fikir, parametrelendirmeden ziyade fibriyondu) – fedvasu