Monades Scala

Monades Scala
«Les monades sont construites à Scala qui effectue des calculs ultérieurs. C'est un élément qui entoure l'autre élément. Il est important de garder à l'esprit que dans ce cas, le résultat d'une opération à une étape sert d'entrée pour un autre calcul qui est le parent de l'étape la plus récente du programme. Monad est un concept plutôt qu'une classe ou une caractéristique. La majorité des collections Scala sont des monades, bien que toutes les monades ne soient pas des collections; Certaines monades à Scala sont des conteneurs comme des options. En un mot, nous pouvons affirmer qu'à Scala, les types de données comme les options, les listes et autres types qui implémentent MAP et FlatMap () sont appelés monades."

Lois des monades à Scala dans Ubuntu 20.04

Nous nous assurons que toute succession de déploiements des fonctions FlatMap et unitaire se traduit par une monade valide si la monade remplit les trois lois. En d'autres termes, une valeur est toujours soumise aux effets de la monade. Un code de code complètement réutilisable qui résout un problème général est ce que les monades et leurs règles définissent comme un paradigme de conception du point de vue de la programmation.

Les trois lois de la monade suivantes:

Identité gauche

Selon l'identité gauche, invoquant la fonction FlatMap pour appliquer une fonction «F» à une valeur «x» qui a été soulevée par la fonction unitaire est identique à l'application de la fonction «F» directement à la valeur «x»:

Monade.unité (x).flatmap (f) = f (x)

Bonne identité

Il dit que lorsque la fonction FlatMap est utilisée et que la fonction unitaire est utilisée comme fonction «F», le résultat est la valeur monadique initiale:

X.flatmap (y => monade.unité (y)) = x

Association

Selon cette règle, l'utilisation d'une série d'appels FlatMap pour appliquer deux fonctions, «F» et «G», à une valeur de monade est identique à l'utilisation de «G» pour s'appliquer à la sortie de la fonction FlatMap avec «F» comme le comme le paramètre.

X.FlatMap (F).flatmap (g) = o.flatmap (x => f (x).flapmap (g))

Avantages des monades à Scala dans Ubuntu 20.04

  • Dans le travail quotidien d'un programmeur fonctionnel, les monades et les transformateurs de la monade sont des abstractions utiles.
  • Monad nous permet de construire des programmes basés sur les lois, même s'il peut sembler être un langage de programmation en soi! Sans beaucoup de flux de contrôle, nous pouvons combiner de nombreuses valeurs monadiques.
  • En conséquence, il y a moins de défauts logiques dans le code, des programmes mieux structurés et, surtout, nous avons la possibilité de mettre à jour les programmes à l'avenir beaucoup plus facilement sans faire des ravages sur toute la planète.

Comment utiliser les monades à Scala dans Ubuntu 20.04

Les monades sont utilisées pour contenir des objets, et ils produisent les deux fonctions correspondantes:

unité(): Semblable au mot clé vide de Java, unité () ne renvoie aucun type de données.

FlatMap ():Semblable à la carte de la fonction Scala (), FlatMap () produit plutôt une série d'éléments par opposition à un seul composant. Après avoir appliqué un Flatmap à la séquence donnée, une liste est produite avec le regroupement intérieur éliminé et une séquence créée. Le terme «monadique» fait référence aux collections qui peuvent prendre en charge à la fois FlatMap et Map.

Exemple n ° 1: Utilisation de FlatMap et Map pour la collection à Scala dans Ubuntu 20.04

Parfois, une monade rappellera à un conteneur d'utiliser une interface spécifique lorsque vous travaillez avec ses valeurs. Monad peut ressembler à une boîte avec un objet à l'intérieur si nous le modélisons nous-mêmes. Nous pouvons récupérer cet objet à l'aide de FlatMap et une autre carte de fonction pratique.

À ce programme Scala, nous avons défini l'objet comme «MyObject1» comme l'objet «MyObject1» est créé. Maintenant, dans le «myObject1», nous avons implémenté la définition de la fonction principale de Scala. Cette fonction sert de point de départ principal pour exécuter n'importe quel code scala. Dans la fonction principale de Scala, nous avons la déclaration des variables comme «L1» et «L2». À ces variables, nous avons attribué la «liste» et la «liste» à initialiser avec les quatre nombres différents, respectivement.

Ensuite, nous avons une autre variable, «L3» où nous avons appliqué la FlatMapFunction, et dans la fonction FlatMap, nous avons invoqué la fonction de carte. Tout d'abord, la fonction MAP a calculé la liste; Par la suite, le FlatMap a évalué la liste. La liste sera générée par la fonction println car nous avons passé la variable «l3» car «l3» a une opération de monade.

Nous avons une liste différente lorsque la fonction de carte est appliquée, mais à la fin, la liste ci-dessous est générée après avoir appliqué la fonction FlatMap.

Exemple n ° 2: Utilisation d'un FlatMap pour éliminer le groupe interne à Scala dans Ubuntu 20.04

Nous avons expliqué la fonction de FlatMap dans le script Scala susmentionné avec la sortie. Maintenant, dans cette instance Scala particulière, nous avons supprimé le regroupement intérieur des collections en utilisant l'application FlatMap ().

Nous avons établi l'objet Scala comme «MyObject2». Ensuite, nous avons soulevé la définition de la méthode principale à l'intérieur du «MyObject2». La définition principale a l'argument de la ligne de commande pour soutenir les fonctions Scala. La méthode principale est étendue avec la déclaration des variables et de l'opération. Nous avons défini les deux variables «P» et «Q» qui ont la liste des nombres dans la plage.

Les éléments de l'ensemble sont retournés comme une liste par la méthode Tolist (). Après cela, nous avons appliqué le Flatmap puis la fonction de carte, qui est invoquée à l'intérieur de la variable «L3». Tout d'abord, la liste est calculée à partir de l'opération «I * J». Ensuite, nous avons obtenu la liste de la fonction de carte. À partir de la fonction FlatMap, une seule liste est évaluée. Toutes les listes internes seront supprimées en interne.

Par conséquent, la liste après le retrait des collections internes est générée comme ci-dessous.

Conclusion

Nous avons discuté de l'idée des monades à Scala dans ce guide. Nous avons introduit l'ensemble minimal de méthodes qu'une monade doit effectuer après avoir offert une brève définition des monades, qui comprenait l'unité et le FlatMap. Nous avons discuté enfin les trois lois de la monade. La bibliothèque Scala Standard a une grande variété de types qui sont tous influencés par l'idée intéressante et pratique des monades. Les types de collection de listes, d'arbre et de carte, pour en mentionner quelques-uns, ainsi que l'option, l'avenir et soit, sont tous des monades.