Hackage ma kilka pakietów dla transformatorów monad:
- mtl : Biblioteka transformatorów Monad
- transformatory : funktor do betonu i transformatory monadowe
- monads-fd : Klasy Monad, używające zależności funkcjonalnych
- monads-tf : Klasy Monad, używające rodzin typów
- monadLib : kolekcja transformatorów monad.
- mtl-tf : biblioteka transformatorów Monad korzystająca z rodzin typów.
- mmtl : Modularna biblioteka transformatorów Monad
- mtlx : Biblioteka transformatora Monad z indeksami typów, zapewniająca „darmowe” kopie.
- compose-trans : Komponowalne transformatory monadowe
(a może trochę przegapiłem)
Którego użyjemy?
mtl jest tym na platformie Haskell, ale ciągle słyszę na reddicie, że jest niefajny.
Ale co jest złego w wyborze, czy nie jest to po prostu dobra rzecz?
Cóż, widziałem, jak na przykład autorzy akcesorów danych musieli zrobić to wszystko, aby zaspokoić tylko popularne wybory:
- biblioteka danych-accessor-monadLib: Funkcje pomocnicze dla monad monadLib
- data-accessor-monads-fd library: Użyj Accessor, aby uzyskać dostęp do stanu w klasie monads-fd State monad
- data-accessor-monads-tf library: Użyj Accessor, aby uzyskać dostęp do stanu w rodzinie typów monad-tf State monad
- data-accessor-mtl biblioteka: Użyj Accessor, aby uzyskać dostęp do stanu w klasie monad stanu mtl
- biblioteka transformersów dostępu do danych: Użyj Accessor, aby uzyskać dostęp do stanu w monadzie stanu transformatorów
Wyobrażam sobie, że jeśli tak się stanie i na przykład kilka konkurencyjnych pakietów Arrow ewoluuje, możemy zobaczyć coś takiego: spoonklink-arrows-transformers, spoonklink-arrows-monadLib, spoonklink-tfArrows-transformers, spoonklink-tfArrows-monadLib, ...
A potem martwię się, że jeśli Spoonklink zostanie rozwidlony, Hackage zabraknie miejsca na dysku. :)
Pytania:
- Dlaczego jest tak wiele pakietów transformatorów Monad?
- Dlaczego mtl [uważa się] za niefajne?
- Jakie są kluczowe różnice?
- Większość z tych pozornie konkurujących ze sobą pakietów została napisana przez Andy'ego Gilla i jest zarządzana przez Rossa Patersona. Czy to oznacza, że te pakiety nie konkurują ze sobą, ale w jakiś sposób ze sobą współpracują? I czy Andy i Ross uważają któryś z ich własnych pakietów za przestarzały?
- Którego powinieneś użyć?