Найти свой путь через Скалаз [дубликат]
Possible Duplicate:
Good scalaz introduction
Я хотел бы узнать больше о Scalaz, возможно, используя Scalaz7, чтобы избежать переподключения моего мозга, как только он будет объявлен стабильным. Моя проблема в том, что Scalaz содержит много функций. В то время как большая часть этого предназначается, чтобы быть независимой от других частей, я хотел бы иметь с высоты птичьего полета глобальную функциональность, предлагаемую Scalaz и как это организовано. Насколько я знаю, Скалаз предлагает, помимо прочего,
Functor
, Applicative
and Monad
traits,
new monads such as Validation
(edit: turns out it is only an applicative)
monad transformers (OptionT
, EitherT
....)
Itereatee
s
Lens
es
Zipper
s
К этому добавлено много неявных преобразований и новых конструкторов, таких какsome
которые перекрываются со стандартной библиотекой, но ведут себя лучше в отношении типов
:type Some(3) // Some[Int]
:type some(3) // Option[Int]
У меня есть базовые знания большинства этих конструкций, но я не владею ни одной из этих концепций.
Do you have any suggestion in what order to learn the library, what logical dependencies exist between modules? More generally, where can I find a high level overview of the library?
EDIT Кажется, что большинство ответов направлены на изучение базовых компонентов функционального программирования, таких как монады, поэтому я попытаюсь быть более точным. У меня есть базовые знания по Haskell и математика, поэтому моя проблема не связана с теорией категорий или базовым функциональным программированием.
Моя проблема в том, что Скалаз - огромная библиотека. Я не знаю, где найти, какие методы доступны или полезны для различных типов данных. Что мне действительно нужно, так это карта, которая, например, скажет мне, что, когда я хочу перебрать ресурсы, которые необходимо утилизировать, я, возможно, захочу рассмотреть итераторов и какие операции я могу сделать с этим. Больше похоже на панораму функциональности, доступной с библиотекой.