Возможный дубликат:
Хорошее представление о скасазе
Я хотел бы узнать больше о Scalaz, возможно, используя Scalaz7, чтобы избежать переналадки моего мозга, как только он будет объявлен стабильным. Моя проблема в том, что Scalaz содержит много функциональности. Хотя большинство из них должно быть независимым от других частей, я хотел бы взглянуть на птицу на глобальную функциональность, предлагаемую Scalaz, и как она организована. Насколько мне известно, Scalaz предлагает, помимо прочего,
-
Functor
,Applicative
иMonad
, - новые монады, такие как
Validation
(править: оказывается, это всего лишь аппликативный) - monad transformers (
OptionT
,EitherT
....) -
Itereatee
s -
Lens
эс -
Zipper
s
К этому добавляется много неявных преобразований, а новые конструкторы, такие как some
, которые перекрываются со стандартной библиотекой, но ведут себя лучше в отношении типов
:type Some(3) // Some[Int]
:type some(3) // Option[Int]
У меня есть основное понимание большинства из этих конструкций, но я не понимаю каких-либо понятий.
Есть ли у вас какое-либо предложение в каком порядке узнать библиотеку, какие логические зависимости существуют между модулями? В более общем плане, где я могу найти обзор библиотеки на высоком уровне?
EDIT Кажется, что большинство ответов направлено на изучение основных компонентов функционального программирования, таких как монады, поэтому я постараюсь быть более точным. У меня есть базовые знания о Haskell и математике, поэтому моя проблема не связана с теорией категорий или базовым функциональным программированием.
Моя проблема в том, что Scalaz - огромная библиотека. Я не знаю, что можно найти, какие методы доступны или полезны для разных типов данных. Мне действительно нужна карта, которая, например, скажет мне, что когда я хочу перебирать ресурсы, которые нужно удалять, я могу рассмотреть итерации и какие операции я могу с этим сделать. Это больше похоже на обзор возможностей, доступных в библиотеке.