Возможный дубликат:
Хорошее введение в scalaz
Я хотел бы узнать больше о Scalaz, возможно, используя Scalaz7, чтобы избежать перепрограммирования моего мозга после того, как он будет объявлен стабильным. Моя проблема в том, что Scalaz содержит много функций. Хотя большая его часть должна быть независимой от других частей, я хотел бы взглянуть с высоты птичьего полета на глобальную функциональность, предлагаемую Scalaz, и на то, как она организована. Насколько я знаю, Scalaz предлагает, среди прочего,
Functor
,Applicative
иMonad
черты,- новые монады, такие как
Validation
(редактировать: оказывается, это только аппликатив) - преобразователи монад (
OptionT
,EitherT
....) Itereatee
sLens
esZipper
s
Вдобавок к этому есть много неявных преобразований и новые конструкторы, такие как some
, которые пересекаются со стандартной библиотекой, но лучше ведут себя в отношении типов.
:type Some(3) // Some[Int]
:type some(3) // Option[Int]
У меня есть базовое представление о большинстве этих конструкций, но я не владею ни одной из концепций.
Есть ли у вас какие-либо предложения, в каком порядке изучать библиотеку, какие логические зависимости существуют между модулями? В общем, где я могу найти общий обзор библиотеки?
EDIT Кажется, что большинство ответов направлены на изучение основных компонентов функционального программирования, таких как монады, поэтому я постараюсь быть более точным. У меня есть базовые знания Haskell и математическое образование, поэтому моя проблема не связана с теорией категорий или базовым функциональным программированием.
Моя проблема в том, что Scalaz — это огромная библиотека. Я не знаю, что и где найти, какие методы доступны или полезны для различных типов данных. Что мне действительно нужно, так это карта, которая, например, скажет мне, что, когда я хочу выполнить итерацию ресурсов, которые необходимо удалить, я могу рассмотреть итерируемые объекты и какие операции я могу с ними выполнять. Больше похоже на обзор функциональности, доступной в библиотеке.
just
Applicative Functor (в scalaz7 у него даже нет flatMap) - person ron   schedule 12.09.2012