SORU
4 Mayıs 2010, Salı


kuruldu,,, monadlar-fd, monadLib ve seçim paradoksu transformers

Hackage monad transformers için çeşitli paketler vardır:

  • mtl: Monad transformer kütüphane
  • transformers: Beton functor ve monad transformers
  • monads-fd: Monad sınıfları, işlevsel bağımlılıkları kullanarak
  • monads-tf: Monad sınıflar, tip aileler kullanarak
  • monadLib: monad transformers koleksiyonu.
  • mtl-tf: Monad transformer kütüphane türü aileler kullanarak.
  • mmtl: Modüler Monad transformer kütüphane
  • mtlx: türü dizinleri trafo kütüphane Monad sağlayan 'ücretsiz' kopyalar.
  • compose-trans: II monad transformers

(ve belki biraz kaçırdım)

Hangisini kullanacağız?

kuruldu, Haskell Platformu biridir, ama kötü olduğunu reddit duyuyorum.

Ama seçim yine de hakkında kötü şey, bu sadece iyi bir şey değil miydi?

Mesela veri-erişimci yazarları, tüm bunları yapmak için sadece popüler seçimler hitap etmeyi nasıl gördüm:

  • -erişimci-veri monadLib Kütüphanesi: monadLib. monadlar için Erişimci işlevleri
  • veri-erişimci-monadlar-fd Kütüphanesi: Erişimci monadlar-fd Devlet monad sınıf . devlet erişin
  • -erişimci-monadlar-veri tf Kütüphanesi: Erişimci monadlar-tf devlet erişin Devlet monad türü Aile
  • -erişimci-veri kütüphane kuruldu: Erişimci kuruldu, Devlet monad sınıf durumuna erişmek için Kullanın
  • veri-erişimci-transformers kitaplığı Kullanın: transformers devlet Devlet monad erişmek için Erişimci

Tahmin ediyorum ki, eğer bu devam ediyor ve örneğin birkaç rakip Ok paketler gelişmeye, biz belki bir şey gibi: spoonklink-oklar-transformatörler, spoonklink-oklar-monadLib, spoonklink-tfArrows-transformatörler, spoonklink-tfArrows-monadLib, ...

Ve sonra spoonklink çatallı olursa, Hackage disk alanı yetersiz çalışır korkuyorum. :)

Soru:

  • Neden bu kadar çok trafo paketleri monad var mı?
  • Neden kuruldu [kabul] hoş değil mi?
  • Ne önemli farklar?
  • Görünüşte rakip bu paketlerin çoğu Andy Gill tarafından yazılmış ve Ross Paterson tarafından korunur. Bu paketleri rakip değil, bir arada, bir şekilde iş yerine anlamına mı geliyor? Andy ve Ross kendi paketlerini kadar eskimiş olarak mı?
  • Hangisini kullanmalıyım?

CEVAP
4 Mayıs 2010, Salı


Onlardan neredeyse tamamen eşdeğerdir:

  • mtl DZD uzantıları kullanır, ama transformers Haskell 98.
  • monads-fd monads-tf eklentiler transformers, işlevsel bağımlılıkları ve tip aileler kullanarak sırasıyla, her iki transformers kayıp mtl işlevleri sağlar.
  • mtl-tf mtl tip aileler kullanarak reimplemented.

, 9* == transformers monads-fd, *12== * transformers monads-tf*yani aslında. transformers geliştirilmiş taşınabilirlik ve türü ilişkili paketleri mtl hoş bu günlerde neden olduğunu düşünüyorum.

mmtl mtlx ve/veya API farklılıkları ve ekstra özellikleri ile mtl dayalı benzer gibi görünüyor.

MonadLib konularda oldukça farklı görünüyor, ama doğrudan aşina değilim. Ayrıca görünüyor DZD uzantıları, diğerlerinden daha çok kullanma.

Bir bakışta compose-trans monad transformers yaratmak için bir şeyler metaprogramming gibi görünüyor. Control.Monad.Trans ile uyumlu olduğunu iddia ediyor... mtl anlamına mı geliyor?

Her neyse, aşağıdaki karar algoritması öneririm:

  • Yeni bir proje için standart monadlar ihtiyacınız var mı? transformers & co, kullanın bize mtl dinlenmeye yardımcı olur.
  • Zaten büyük bir proje içinde mtl kullanıyor musunuz? transformers tamamen uyumlu değil, ama bir geçiş için seni öldürecek.
  • Diğer paketler gereken sıradışı bir işlevsellik sağlar mı? De kullanabilir kendi haddeleme yerine.
  • Hala tatminsiz? Hepsini dışarı atmak, category-extras, indirmek ve bir sayfa ile dünyanın sorunları ve yarım tüm sorunları çözmekanlaşılmaz soyut saçmalıknefes genel kod.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Good Creative Academy

    Good Creativ

    19 Kasım 2009