Hackage memiliki beberapa paket untuk trafo monad:
- mtl : Perpustakaan trafo Monad
- Transformer : Trafo functor dan monad beton
- monads-fd : Kelas monad , menggunakan dependensi fungsional
- monads-tf : Kelas Monad, menggunakan keluarga tipe
- monadLib : Kumpulan transformator monad.
- mtl-tf : Pustaka transformator monad menggunakan keluarga tipe.
- mmtl : Perpustakaan transformator Monad Modular
- mtlx : Pustaka transformator Monad dengan indeks tipe, menyediakan salinan 'gratis'.
- compose-trans : Transformator monad yang dapat disusun
(dan mungkin saya melewatkan beberapa)
Yang mana yang akan kami gunakan?
mtl adalah salah satu yang ada di Platform Haskell, tetapi saya terus mendengar di reddit bahwa ini tidak keren.
Tapi apa buruknya pilihan, bukankah itu hanya hal yang baik?
Nah, saya melihat bagaimana misalnya penulis pengakses data harus membuat semua ini untuk memenuhi hanya pilihan yang populer:
- pustaka data-accessor-monadLib: Fungsi pengakses untuk monad monadLib
- pustaka data-accessor-monads-fd: Gunakan Accessor untuk mengakses status di kelas monad Status monads-fd
- pustaka data-accessor-monads-tf: Gunakan Accessor untuk mengakses status di monads-tf State monad type family
- pustaka data-accessor-mtl: Gunakan Accessor untuk mengakses status di kelas monad mtl State
- pustaka data-accessor-transformers: Gunakan Accessor untuk mengakses status di monad State transformer
Saya membayangkan bahwa jika ini terus berjalan dan misalnya beberapa paket Arrow yang bersaing berkembang, kita mungkin melihat sesuatu seperti: spoonklink-arrows-transformers, spoonklink-arrows-monadLib, spoonklink-tfArrows-transformers, spoonklink-tfArrows-monadLib, ...
Dan kemudian saya khawatir jika spoonklink bercabang, Hackage akan kehabisan ruang disk. :)
Pertanyaan:
- Kenapa banyak sekali paket trafo monad?
- Mengapa mtl [dianggap] tidak keren?
- Apa perbedaan utamanya?
- Kebanyakan dari paket yang tampaknya bersaing ini ditulis oleh Andy Gill dan dikelola oleh Ross Paterson. Apakah ini berarti bahwa paket-paket ini tidak bersaing tetapi bekerja bersama dalam beberapa hal? Dan apakah Andy dan Ross menganggap paket mereka sendiri sudah usang?
- Manakah yang harus Anda dan saya gunakan?