Simon, genişleme açısından temelde doğrudur. Modern işlevsel dillerin anlambiliminin ne olduğunu çok iyi biliyoruz ve bunlar birbirlerinin nispeten küçük varyasyonlarıdır - her biri monadik bir meta dilde biraz farklı çevirileri temsil eder. Şema gibi bir dilde bile (birinci sınıf kontrole sahip dinamik olarak yazılmış üst düzey bir zorunlu dil), ML ve Haskell'e oldukça yakın bir semantiğe sahiptir.
Sesli bir bakış açısından, Şemanın anlambilimi için oldukça basit bir etki alanı denklemi vererek başlayabilirsiniz - buna deyin . İnsanlar 70'lerin sonunda / 80'lerin başında böyle denklemleri çözebilir ve çözdüler, bu yüzden bu çok da kötü değil. Benzer şekilde, Şema için de nispeten basit işlemsel anlambilim vardır. ("Şema" dediğimde, tüm gerçek diller gibi birkaç siğilin olduğu gerçek Şema'nın aksine, türü olmayan lambda hesabı artı devamları artı durumu kastediyorum.)V
Ancak modern yazım işlevsel dillerini yorumlamak için uygun bir kategoriye ulaşmak için, işler oldukça korkutucu hale geliyor. Temel olarak, bu alan üzerinde ultrametrik olarak zenginleştirilmiş bir kısmi denklik ilişkileri kategorisi oluşturursunuz. (Örnek olarak, Birkedal, Stovring ve Thamsborg'un "Parametrik Polimorfizmin Gerçekleşebilirlik Semantiği, Genel Referanslar ve Özyinelemeli Türler" konusuna bakın.) Operasyonel semantiği tercih edenler bunu adım dizinli mantıksal ilişkiler olarak bilirler. (Örneğin, Ahmed, Dreyer ve Rossberg'in "Devlete Bağlı Temsil Bağımsızlığı" konusuna bakın.) Her iki şekilde de, kullanılan teknikler nispeten yenidir.
Bu matematiksel karmaşıklığın nedeni, parametrik polimorfizmi ve üst düzey durumu aynı anda yorumlayabilmemiz gerektiğidir. Ancak bunu yaptıktan sonra, temelde evde özgürsünüz, çünkü bu yapı tüm sert parçaları içerir. Artık ML ve Haskell türlerini normal monadik çevirilerle yorumlayabilirsiniz. ML sıkı, effectful işlev alanı a -> b
çevirir ve Haskell'ın yavaş fonksiyon alanı çevirir ⟨ bir ⟩ → ⟨ b ⟩ ile T ( A ) IO-Haskell tek hücreli yorumlama yan etkileri monadik tipi, ve⟨ Bir ⟩ → T⟨ B ⟩⟨ Bir ⟩ → ⟨ b ⟩T( A ) tipi ML veya Haskell Çeşidi yorumudurve → Pers bu kategorideki üstel olduğunu.⟨ Bir ⟩a
→
Denklem teorisine gelince, bu diller her ikisi de aynı dilin biraz farklı alt kümelerine çevirilerle tanımlanabildiğinden, bunları birbirlerinin sözdizimsel varyasyonları olarak adlandırmak tamamen adildir.
ML ve Haskell arasındaki his farkı aslında iki dilin - yani yürütme zamanı ve bellek tüketiminin - içsel özelliklerinden kaynaklanmaktadır. ML, gerçek bir ad-çağrı dili gibi, bir bileşimsel performans modeline (yani bir programın zaman / alan maliyeti, alt dönemlerinin zaman / alan maliyetlerinden hesaplanabilir) sahiptir. Gerçek Haskell, ihtiyaca göre çağrı, bir tür notlama ile uygulanır ve bunun sonucu olarak performansı kompozisyon değildir - bir değişkene bağlı bir ifadenin ne kadar süre önce değerlendirilip değerlendirilmediğine bağlıdır. Bu, yukarıda bahsettiğim anlambilimde modellenmemiştir.
Boyutsal özellikleri daha ciddiye almak istiyorsanız, ML ve Haskell daha ciddi farklılıklar göstermeye başlar. Muhtemelen onlar için ortak bir meta dil tasarlamak mümkündür, ancak türlerin yorumlanması, kanıtlama teorik odaklanma fikri ile ilgili olarak çok daha sistematik bir şekilde değişecektir . Bunu öğrenmek için iyi bir yer Noam Zeilberger'in doktora tezidir.