SORU
15 ŞUBAT 2012, ÇARŞAMBA


Neden değil't orada birçok tartışmalar co - contra-varyans hakkında Haskell içinde Scala veya C karşı (#)?

Ne kovaryans biliyorum ve türleri contravariance. Benim sorum neden bu kavramların tartışma henüz karşılaştığım Haskell, söyle, Scala (karşıt olarak) çalışma odamda değil mi?

Scala veya C olarak karşı Haskell manzarası tür temel bir fark var gibi görünüyor# ve bu farkın ne olduğunu ifade etmek isterim.

Belki de yanılıyorum ve ben henüz yeterince Haskell öğrenemedin mi :-)

CEVAP
15 ŞUBAT 2012, ÇARŞAMBA


İki ana nedeni vardır:

  • Haskell kistlerinin alt tiplerinin belirlenmesindeki doğal bir kavram yoktur, genel olarak sapma daha az ilgili.
  • Contravariance Haskell en veri türleri sadece kovaryant olur mutability söz konusu olduğunda çoğunlukla görünür ve açıkça ayırt için pek bir değeri olmazdı.

Ancak, bu kavramı uygulamak için örnek, kaldırma ameliyatı fmap Functor örnekleri aslında kovaryant; şartları co-/contravariance kullanılır Kategori Teorisi hakkında konuşmak funktorlar. contravariant package karşıtı funktorlar türü için bir sınıf tanımlar ve örnek listeye bakarsanız çok daha az yaygın olduğunu söyledim.

Orada da yerlerde fikir gelirse örtülü olarak, nasıl manuel dönüşüm iş ... ... çeşitli sayısal tür sınıfları tanımlamak dönüşümler ve temel türleri gibi Integer Rational ve modülü Data.List içerir jenerik bazı standart fonksiyonlar. Bakarsanız the types of these generic versions göreceksin Integral kısıtlamalar (veren toInteger) kullanılan türde karşıtı pozisyon, Num (kısıtlar veren fromInteger) kullanılan kovaryant pozisyon.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Distractify

    Distractify

    1 Aralık 2011
  • DRDAnimation

    DRDAnimation

    28 EYLÜL 2012
  • Pituvision

    Pituvision

    11 Mart 2006