SORU
29 Kasım 2009, Pazar


Scala ve Haskell tür sistemlerin farklar ve benzerlikler nelerdir?

Nasıl Haskell bir uzmana Scala tür sistemi açıklamak için? Örnekler Scala avantajları ne gösterir?

Nasıl gelişmiş Scala bir uygulayıcı için Haskell tür sistemi açıklamak için? Scala yapılabilir mi Haskell içinde ne yapılabilir?

CEVAP
29 Kasım 2009, Pazar


Haskell bir programcı İçin Scala:

Scala-birinci sınıf modülleri ile sıkı ve saf olmayan bir dildir. Yeni tip modül olarak ilan edilir ("sınıflar""özellikleri" ince farklar vardır)./ Modüller tip kurucular evrensel olarak sayısal tür parametreleri alarak olabilir. Modül değerleri, değişken değişkenleri ve fonksiyonları oluşan üyeleri vardır (adı verilen "yöntem", bir değişken this adlı modülü örtülü olarak geçer). Modüller de parametre hangi tür üyeleri olabilir. Tür üyeleri varoluşsal bir ölçülebilir ve tür parametreleri yüksek kinded olabilir.

Birinci sınıf fonksiyonları da modülleri. Bir işlev bir yöntem apply adında bir modül. Bir yöntem birinci sınıf değil, ama bir sözdizimi birinci sınıf bir işlevi bir yöntem sarmak için sağlanır. Ne yazık ki, bir modül türü Tüm parametrelerin ön gerektirir, dolayısıyla kısmen uygulanan birinci sınıf bir işlevi evrensel nicel izin verilmez. Daha genel olarak, Scala tamamen rütbe türleri için doğrudan bir mekanizma ama modülleri yüksek kinded taklit-n rütbe türleri için kullanılabilir parametreli 1, daha yüksek yoksun.

Genel kapsamlı türü sınıflar yerine, Scala herhangi bir tür örtülü bir değer bildirimini sağlar. Bu örtük dönüştürme sağlar, ve bu nedenle uzantı türü olan fonksiyonları içerir. Örtülü dönüşüm ek olarak, yazın uzantısı "modülleri arasında alt/supertype bir ilişki bildirimini sağlar." uzanır mekanizması tarafından sağlanır Bu mekanizma kullanılabilir simüle etmek için cebirsel veri türleri nerede supertype görülebilir olarak yazın sol tarafında bir veri bildirimi, hem de onun alt değer kurucular üzerinde sağ tarafta. Bu da soyut veri yapıları gerçekten kapalı olmadığı anlamına gelir. Scala geniş desen eşleştirme yeteneklerini sanal bir desen birinci sınıf desenli eşleştirici kullanarak vardır.

Scala kistlerinin alt tiplerinin belirlenmesindeki destekler, ve bu tür kesmesi önemli ölçüde sınırlar. Ama tür kesmesi zamanla gelişti. Yüksek kinded tür kesmesi desteklenir. Ancak, Scala anlamlı bir türlü sistemi yoktur, ve bu nedenle hiçbir çıkarım ve birleşme yoktur. Eğer a tipi değişken tanıttı, aksi takdirde açıklamalı sürece biraz *. Any (her türlü supertype) ve Nothing gibi bazı türleri (her türü, bir alt türü) teknik olarakher türlütür bağımsız değişkenleri için uygulanamaz halde.

Scala bir programcı için Haskell:

Haskell tamamen fonksiyonel bir dildir. Bu fonksiyonları yan etkiler olmasına izin verildiği anlamına gelir. Örneğin, bir Haskell program yok yazdırma ekranı gibi, ama bir işlevi döndüren bir değer IO[_] veri türü olan açıklar bir dizi eylemlerin IO alt gerçekleştirin.

Scala varsayılan ve sağlar tarafından sıkı oysa ki adı" nonstrict işlev bağımsız değişkenleri için ek açıklama, Haskell tembel varsayılan olarak kullanmak "-" semantik ve sıkı tartışmalar için açıklama sağlar.

Haskell yazın çıkarım Scala oranla daha eksiksiz, tam çıkarım olmamasına rağmen kısmen uygulanan polimorfik tür markalar için. Bu tür bir açıklama neredeyse hiç gerekli olduğu anlamına gelir.

-N rütbe tip aileler ve polykinds gibi DZD derleyici için son uzantıları, Scala hiçbir eşdeğeri olan ileri tip sistemine sahiptir izin verir.

Haskell, modül tipleri ve fonksiyonları topluluğudur, ama modülleri varlıkları sınıf ilk değildir. İmplicits türü sınıflar tarafından sağlanır, ama bu küresel bir kez kapsamlı ilan ve açıkça Scala gibi geçirilemez. Belirli bir türü için verilen tip bir sınıfın birden çok örneği Scala bu sadece açıkça örneklerini geçerek kapsayan ya da çözülmüş olurdu oysa newtype mekanizması tarafından çözümlenir.

Haskell", yöntemi var/hayır İkilemi. fonksiyon" nesne yönelimli olmadığından ... Her fonksiyonu birinci sınıf ve her fonksiyonu varsayılan (Function1, Function2, vb) tarafından körili.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Khoury

    Adam Khoury

    23 Ocak 2008
  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • jkimisyellow...ish

    jkimisyellow

    8 Temmuz 2009