Duplicata possible :
Bonne introduction de scalaz
J'aimerais en savoir plus sur Scalaz, éventuellement en utilisant Scalaz7 pour éviter de recâbler mon cerveau une fois qu'il sera déclaré stable. Mon problème est que Scalaz contient beaucoup de fonctionnalités. Bien que la plupart d'entre elles soient censées être indépendantes d'autres parties, j'aimerais avoir une vue d'ensemble de la fonctionnalité globale offerte par Scalaz et de la façon dont elle est organisée. Pour autant que je sache, Scalaz offre, entre autres, les fonctionnalités suivantes
Functor
,Applicative
yMonad
traits,- de nouvelles monades telles que
Validation
(edit : il s'avère qu'il s'agit seulement d'un applicatif) - transformateurs de monades (
OptionT
,EitherT
....) Itereatee
sLens
esZipper
s
À cela s'ajoutent de nombreuses conversions implicites et de nouveaux constructeurs tels que some
qui se chevauchent avec la bibliothèque standard, mais qui peuvent être
:type Some(3) // Some[Int]
:type some(3) // Option[Int]
J'ai une connaissance de base de la plupart de ces constructions, mais je ne maîtrise aucun de ces concepts.
Avez-vous des suggestions quant à l'ordre dans lequel apprendre la bibliothèque, quelles sont les dépendances logiques entre les modules ? Plus généralement, où puis-je trouver une vue d'ensemble de la bibliothèque ?
EDIT Il semble que la plupart des réponses soient orientées vers l'apprentissage des composants de base de la programmation fonctionnelle, comme les monades, je vais donc essayer d'être plus précis. J'ai une connaissance de base de Haskell et une formation de mathématicien, donc mon problème n'est pas lié à la théorie des catégories ou à la programmation fonctionnelle de base.
Mon problème est que Scalaz est une énorme bibliothèque. Je ne sais pas où trouver, quelles méthodes sont disponibles ou utiles pour les différents types de données. Ce dont j'ai vraiment besoin, c'est d'une carte qui, par exemple, me dirait que lorsque je veux itérer sur des ressources qui ont besoin d'être éliminées, je peux vouloir considérer les itérés et le type d'opérations que je peux faire avec cela. Il s'agit plutôt d'un panorama des fonctionnalités disponibles dans la bibliothèque.