SORU
4 AĞUSTOS 2011, PERŞEMBE


'un Arayüzü ve'in Haskell tür sınıf Java: farklar ve benzerlikler?

Haskell öğreniyorum yaparken fark ettimtipi sınıfHaskell dan kaynaklanan büyük bir buluş olması gerekiyordu.,

Ancak, the Wikipedia page on type class:

Programcı tanımlar bir tür işlevi bir dizi belirterek, sınıf veya sürekli isimler, birlikte varolması gerektiğini kendi türleri ile her tür için bu sınıfa aittir.

Oldukça yakın görünüyorJava Arayüzübana (Wikipedia's Interface(Java) page alıntı):

Java programlama dilinde bir arayüz soyut bir yazın. bir arabirim (dönem genel anlamda)belirtmek için kullanılır bu dersleri uygulamak gerekir.

Bu iki görünüyor oldukça benzer: türü sınıf arayüz bir sınıf davranış. sınırı ise bir tür davranışlarını sınırlamak,

Haskell tür sınıf ve Java arayüzü arasındaki farklar ve benzerlikler nelerdir acaba, ya da belki de temelde farklı olduğu?

DÜZENLEME:even haskell.org admits that they are similar fark ettim. Eğer çok benzer (ya?), eğer o zaman neden yazın sınıf böyle hype ile tedavi edilir?

DAHA FAZLA DÜZENLEME:Vay be, çok güzel cevaplar! Topluluk iyi bir karar vermesine izin vermek zorunda kalacağım. Cevapları okurken ancak, hepsi öyle görünüyor< . em ^"typeclass arayüzü olmasa veya jenerik ile başa çıkmak için pek çok yol vardır". Yardım edemem ama merak ediyorum, orada bir şey yapamamarayüzleri typeclasses olmasa yapabilir mi?Ayrıca, fark ettim ki Wikipedia iddia typeclass ilk icat olarak 1989 kağıt *"Nasıl ad-hoc polimorfizmi az ad hoc" iken, Haskell hala beşiğinde iken Java proje başlatıldı 1991 ve ilk yayımlanan 1995. Bu yüzdenbelki typeclass arayüzleri benzer olmak yerine, tam tersi, bu arabirimlerinden typeclass etkilenmiştir?Herhangi bir belge/belgeleri ya da bu destek çürütmek var mı? Tüm cevaplar için teşekkürler, çok aydınlatıcı.

Tüm girişler için teşekkürler!

CEVAP
4 AĞUSTOS 2011, PERŞEMBE


Bir arabirim tür bir sınıf değerleri türü t -> whatever whatever t içermiyor nerede) nerede SomeInterface t gibi olduğunu söyleyebilirim. Bu Java ve benzeri dillerde miras ilişkinin tür, yöntem aradı, onlar nesne türü, ve başka bir şey bağlıdır çünkü.

Demek gerçekten zor şeyler gibi add :: t -> t -> t ile bir arayüz, nerede polimorfik birden fazla parametre, çünkü mümkün değil arabirimi belirttiğiniz değişken türüne ve yöntemin dönüş türü aynı tür olarak tür nesne denir (yani "öz" türü). İle Jenerik, biraz yollar için sahte bunu yaparak bir arayüz ile genel parametre bu beklenir aynı tür nesneyi kendisi gibi nasıl Comparable<T> mı, Neredesin beklendiği için kullanın. Foo implements Comparable<Foo> compareTo(T otherobject) çeşit türü vardır t -> t -> Ordering. Ama yine de programcı bu kuralı takip etmek gerekir, ve aynı zamanda insanların bu arayüzü kullanan bir işlevi yapmak istiyorum, özyinelemeli genel tür parametreleri için zaman baş ağrısı neden olur.

Ayrıca, bir yöntem değildir bu yüzden burada bir işlevi çağırmadan, çünkü değilsin empty :: t gibi şeyler olmayacak.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Abe Olandres

    Abe Olandres

    16 EYLÜL 2006
  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • SketchBookPro

    SketchBookPr

    6 Mayıs 2009