Найти свой путь через Скалаз [дубликат]
Возможный дубликат:
Хорошее введение в скалаз
Я хотел бы узнать больше о Scalaz, возможно, используя Scalaz7, чтобы избежать переподключения моего мозга, как только он будет объявлен стабильным. Моя проблема в том, что Scalaz содержит много функций. Хотя большая часть этого предназначается, чтобы быть независимой от других частей, я хотел бы иметь птицуВзгляд на глобальную функциональность, которую предлагает Скалаз, и то, как она организована. Насколько я знаю, Скалаз предлагает, помимо прочего,
Functor
Applicative
а такжеMonad
черты,новые монады, такие какValidation
(правка: оказывается, это только аппликатив)монадные трансформаторы (,OptionT
EitherT
....) sItereatee
Lens
ESSZipper
К этому добавлено много неявных преобразований и новых конструкторов, таких какsome
которые перекрываются со стандартной библиотекой, но ведут себя лучше в отношении типов
:type Some(3) // Some[Int]
:type some(3) // Option[Int]
У меня есть базовые знания большинства этих конструкций, но я не владею ни одной из этих концепций.
Есть ли у вас какие-либо предположения, в каком порядке изучать библиотеку, какие логические зависимости существуют между модулями? В целом, где я могу найти общий обзор библиотеки?
РЕДАКТИРОВАТЬ Кажется, что большинство ответов направлены на изучение базовых компонентов функционального программирования, таких как монады, поэтому я попытаюсь быть более точным. У меня есть базовые знания по Haskell и математика, поэтому моя проблема не связана с теорией категорий или базовым функциональным программированием.
Моя проблема в том, что Скалаз - огромная библиотека. Я не знаю, где найти, какие методы доступны или полезны для различных типов данных. Что мне действительно нужно, так это карта, которая, например, скажет мне, что, когда я хочу перебрать ресурсы, которые необходимо утилизировать, я, возможно, захочу рассмотреть итераторов и какие операции я могу сделать с этим. Больше похоже на панораму функциональности, доступной с библиотекой.