Hackage hat mehrere Pakete für Monadentransformatoren:
- mtl : Monadentransformatorbibliothek
- Transformatoren : Betonfunktor- und Monadentransformatoren
- monads-fd : Monadenklassen unter Verwendung funktionaler Abhängigkeiten
- monads-tf : Monadenklassen unter Verwendung von Typfamilien
- monadLib : Eine Sammlung von Monadentransformatoren.
- mtl-tf : Monadentransformatorbibliothek unter Verwendung von Typfamilien.
- mmtl : Modulare Monadentransformatorbibliothek
- mtlx : Monadentransformatorbibliothek mit Typindizes , die 'kostenlose' Kopien bereitstellt.
- compose-trans : Zusammensetzbare Monadentransformatoren
(und vielleicht habe ich welche verpasst)
Welches sollen wir verwenden?
mtl ist das auf der Haskell-Plattform, aber ich höre immer wieder auf reddit, dass es uncool ist.
Aber was ist überhaupt schlecht an der Wahl, ist es nicht nur eine gute Sache?
Nun, ich habe gesehen, wie zum Beispiel die Autoren von Data-Accessor all dies treffen mussten, um nur die populären Entscheidungen zu treffen:
- data-accessor-monadLib-Bibliothek: Accessor-Funktionen für die Monaden von monadLib
- data-accessor-monads-fd-Bibliothek: Verwenden Sie Accessor, um auf den Status in der Monadenklasse monads-fd State zuzugreifen
- data-accessor-monads-tf-Bibliothek: Verwenden Sie Accessor, um auf den Status in der Monadentypfamilie monads-tf State zuzugreifen
- data-accessor-mtl library: Verwenden Sie Accessor, um auf den Status in der mtl State-Monadenklasse zuzugreifen
- Datenzugriffs-Transformator-Bibliothek: Verwenden Sie Accessor, um auf den Status in der Statusmonade des Transformators zuzugreifen
Ich stelle mir vor, dass, wenn dies so weitergeht und sich zum Beispiel mehrere konkurrierende Arrow-Pakete entwickeln, wir etwas sehen könnten wie: Spoonklink-Pfeile-Transformatoren, Spoonklink-Pfeile-monadLib, Spoonklink-tfArrows-Transformatoren, Spoonklink-tfArrows-monadLib, ...
Und dann mache ich mir Sorgen, dass Hackage keinen Speicherplatz mehr hat, wenn der Spoonklink gespalten wird. :) :)
Fragen:
- Warum gibt es so viele Monadentransformator-Pakete?
- Warum ist mtl uncool?
- Was sind die Hauptunterschiede?
- Die meisten dieser scheinbar konkurrierenden Pakete wurden von Andy Gill geschrieben und werden von Ross Paterson gepflegt. Bedeutet dies, dass diese Pakete nicht miteinander konkurrieren, sondern auf irgendeine Weise zusammenarbeiten? Und halten Andy und Ross eines ihrer eigenen Pakete für veraltet?
- Welches sollten Sie und ich verwenden?