SORU
25 Kasım 2012, Pazar


Nedir &; la carte" polimorfizmi quot; ve nasıl yararlanabilir miyim?

Onun konuşma Simple Made Easy, Rick Hickey hakkında konuşuyor "Alakart polimorfizmi"30:00 video içine (). Aynı bağlamda, o da Haskell Type Classes ve Clojure Multi-Methods (ve protokoller) bahseder.

Bu kavramlar çok aşina olmadığım için, elde etmek için çalışırken yararlılığını anlamak istiyorumbasitlik. Bu kavram herhangi bir örnek veya vitrinlerinde özellikle ilgimi çektiScala.

CEVAP
27 Kasım 2012, Salı


AlabilirsinAlakart polimorfizmigibiİsteğe bağlı polimorfizmi.

Clojure toplum terimi gurur duyuyoruzAlakart polimorfizmiClojure olması nedeniyle birden fazla polimorfizmi stratejileri destekler. Bunlardan bazıları:

  • Prototype-based polymorphism

  • Miras polimorfizmi

    Bu polimorfizmi stratejisi Java tarafından kullanılır. Clojure vekaleten bu destek. Java birlikte çalışabilirlik yaparken yararlı.

  • Protokol

    Clojure için protokol Haskell olarak TypeClass.

  • Multimethod

    Protokoller polimorfik gönderme ilk bağımsız değişken türüne bağlı olarak sağlarken, multimethods yöntemin herhangi bir fonksiyon dayalı gönderme (herhangi) argümanlar çok daha esnektir.

Alakart polimorfizmidemek durum için en iyi strateji polimorfizmi ne olursa olsun. "Seçin Tüm araç içindeler."

Scala TypeClass desen implicits kullanarak uygulayabilirsiniz. Eğer gerçek dünya örnek isterseniz Scalaz source okuyun. Scala dili düzeyinde multimethods desteklemiyor, ama yaklaşan 2.10 makro yardımı ile mümkündür sanırım.

Etkileri olarak TypeClass ve Multimethod gibi gelişmiş polimorfizmi stratejileri Expression Problem çözmenize yardımcı olabilir.

"Hedefi tanımlamak için bir veri türü tarafından durumlarda, nerede bir can add new durumlarda veri ve yeni işlevleri üzerinde veri olmadan yeniden varolan Kodu ve koruyarak statik tip emniyet (örneğin, hiçbir yayınları)".

BTW, bu soruya tek bir StackOverflow soru sığmayacak kadar büyük. Benim önerim bu kavramları tanımak için, ve sonra kendi yararını anlayacaksınız.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • listedabive

    listedabive

    30 Ocak 2007
  • Stevie

    Stevie

    2 Mayıs 2010