Hackage имеет несколько пакетов для монадных трансформаторов:
- MTL : библиотека монадных трансформаторов
- трансформаторы : Конкретные трансформаторы с функтором и монадой
- monads-fd : классы монад с использованием функциональных зависимостей
- monads-tf : классы монад, использующие семейства типов
- monadLib : Коллекция монадных трансформаторов.
- mtl-tf : библиотека монадных преобразователей, использующая семейства типов.
- mmtl : библиотека модульных трансформаторов Monad
- mtlx : библиотека преобразователей Monad с индексами типов, предоставляющая «бесплатные» копии.
- compose-trans : составные монадные трансформаторы
(а может я и пропустил)
Какой мы будем использовать?
MTL является платформой на платформе Haskell, но я по-прежнему слышу на Reddit, что она не крутая.
Но что плохого в выборе в любом случае, разве это не просто хорошо?
Ну, я видел, как, например, авторам средства доступа к данным пришлось сделать все это, чтобы удовлетворить только популярный выбор:
- библиотека data-accessor-monadLib: функции доступа для монад monadLib
- библиотека data-accessor-monads-fd: использование Accessor для доступа к состоянию в классе монад-fd State monad
- библиотека data-accessor-monads-tf: используйте Accessor для доступа к состоянию в monads-tf State Тип монады
- библиотека data-accessor-mtl: использование Accessor для доступа к состоянию в классе монад mtl State
- библиотека data-accessor-transformers: использование Accessor для доступа к состоянию в преобразователях Монада состояний
Я полагаю, что если это продолжится и, например, будут развиваться, например, несколько конкурирующих пакетов Arrow, мы можем увидеть что-то вроде: spoonklink-arrow-transformers, spoonklink-arrow-monadLib, spoonklink-tfArrows-transformers, spoonklink-tfArrows-monadLib,. ..
А потом я переживаю, что если ложклинк будет разветвлен, у Хакеджа не хватит места на диске. :)
Вопросы:
* * 1068
Почему так много монадных трансформаторных пакетов?
Почему mtl [считается] не круто?
В чем основные отличия?
Большинство этих, казалось бы, конкурирующих пакетов были написаны Энди Гиллом и поддерживаются Россом Патерсоном. Означает ли это, что эти пакеты не конкурируют, а скорее работают вместе? А Энди и Росс считают какие-то свои пакеты устаревшими?
Какой из них вы и я должны использовать?