Monads Scala

Monads Scala
„Monady są zbudowane w Scali, które przeprowadzają kolejne obliczenia. Jest to przedmiot, który otacza drugi element. Należy pamiętać, że w tym przypadku wynik jednej operacji na jednym etapie służy jako dane wejściowe dla innego obliczenia, które jest rodzicem najnowszego kroku w programie. Monad to koncepcja, a nie klasa lub charakterystyka. Większość kolekcji Scala to monady, chociaż nie wszystkie monady są kolekcjami; Niektóre monady w Scala to kontenery takie jak opcje. Krótko mówiąc, możemy stwierdzić, że w Scala typy danych, takie jak opcje, listy i inne rodzaje, które wdrażają mapę i flatmap (), są nazywane monadami."

Prawa monad w Scali w Ubuntu 20.04

Zapewniamy, że jakakolwiek sukcesja wdrożeń funkcji FlatMap i jednostki powoduje ważną monadę, jeśli monada spełnia trzy prawa. Innymi słowy, wartość nadal podlega skutkom monady. Całkowicie użyteczny kod, który rozwiązuje ogólny problem, to to, co Monady i ich zasady definiują jako paradygmat projektowy z perspektywy programowania.

Następujące trzy przepisy Monad:

Pozostawiona tożsamość

Zgodnie z lewą tożsamością wywołanie funkcji FlatMap w celu zastosowania funkcji „F” do wartości „x”, która została podniesiona przez funkcję jednostki, jest identyczne z zastosowaniem funkcji „F” prosto do wartości „x”:

Monad.Jednostka (x).flatmap (f) = f (x)

Właściwa tożsamość

Mówi, że gdy używana jest funkcja FlatMap, a funkcja jednostki jest używana jako funkcja „F”, wynik jest początkową wartością monadyczną:

X.flatmap (y => monada.Jednostka (y)) = x

Asocjacyjność

Zgodnie z tą zasadą użycie serii połączeń flatmap w celu zastosowania dwóch funkcji, „f” i „g”, do wartości monady jest identyczne z użyciem „g” do zastosowania do wyjścia funkcji flatmap z „f” jako parametr.

X.flatmap (f).flatmap (g) = o.flatMap (x => f (x).Flapmap (g))

Zalety monad w Scali w Ubuntu 20.04

  • W codziennej pracy funkcjonalnego programisty monady i transformatory monady są pomocnymi abstrakcjami.
  • Monad pozwala nam konstruować programy oparte na przepisach, nawet jeśli może wydawać się, że jest to język programowania samego samego siebie! Bez większego przepływu kontrolnego możemy połączyć wiele wartości monadycznych.
  • W rezultacie w kodzie jest mniej logicznych wad, programy lepiej ustrukturyzowane, a co najważniejsze, mamy możliwość znacznie łatwiejszej aktualizacji programów w przyszłości.

Jak używać monad w Scali w Ubuntu 20.04

Monady służą do zawierania obiektów i wytwarzają odpowiednie dwie funkcje:

jednostka(): Podobnie jak słowo kluczowe Java, Unit () nie zwraca żadnych typów danych.

FlatMap ():Podobnie do mapy funkcji scala (), flatMap () zamiast tego wytwarza serię elementów w przeciwieństwie do jednego komponentu. Po zastosowaniu flatMap do danej sekwencji, lista jest wytwarzana z eliminowaną grupą wewnętrzną i powstaną sekwencję. Termin „monadyczny” odnosi się do kolekcji, które mogą obsługiwać zarówno FlatMap, jak i mapę.

Przykład nr 1: Używanie flatMap i mapy do kolekcji w Scala w Ubuntu 20.04

Czasami monada przypomina kontenerowi o użyciu określonego interfejsu podczas pracy z jego wartościami. Monad może przypominać pudełko z obiektem w środku, jeśli sami go modelujemy. Możemy odzyskać ten obiekt za pomocą flatMap i jeszcze jednej praktycznej mapy funkcji.

Do tego programu Scala zdefiniowaliśmy obiekt jako „myObject1” jako tworzony obiekt „MyObject1”. Teraz, w ramach „MyObject1”, zaimplementowaliśmy definicję głównej funkcji Scala. Ta funkcja służy jako główny punkt wyjścia do uruchamiania dowolnego kodu Scala. W ramach głównej funkcji Scali mamy deklarację zmiennych jako „L1” i „L2”. Do tych zmiennych przypisaliśmy „listę” i „listę” do zainicjowania odpowiednio z czterema różnymi liczbami.

Następnie mamy inną zmienną, „L3”, w której zastosowaliśmy funkcję flatMapfunk, a w ramach funkcji FlatMap wywołaliśmy funkcję mapy. Po pierwsze, funkcja MAP obliczyła listę; Następnie FlatMap ocenił listę. Lista zostanie wygenerowana przez funkcję println, ponieważ przekazaliśmy do niej zmienną „L3”, ponieważ „L3” ma operację Monads.

Mamy inną listę po zastosowaniu funkcji mapy, ale na końcu poniższa lista jest generowana po zastosowaniu funkcji FlatMap.

Przykład nr 2: Używanie flatMap do usuwania grupy wewnętrznej w Scala w Ubuntu 20.04

Wyjaśniliśmy funkcję flatMap we wspomnianym skrypcie Scala z wyjściem. Teraz, w tej konkretnej instancji Scala, usunęliśmy wewnętrzną grupę kolekcji za pomocą aplikacji FlatMap ().

Ustanowiliśmy obiekt Scala jako „myObject2”. Następnie podnieśliśmy główną definicję metody w „myoBject2”. Główna definicja ma argument wiersza poleceń dotyczących obsługi funkcji Scala. Główna metoda jest rozszerzona o deklarowanie zmiennych i działalności. Zdefiniowaliśmy dwie zmienne „P” i „Q”, które mają listę liczb w zakresie.

Elementy zestawu są zwracane jako lista metodą tolist (). Następnie zastosowaliśmy MAP Flat, a następnie funkcję MAP, która jest wywoływana w zmiennej „L3”. Po pierwsze, lista jest obliczana z operacji „I*J”. Następnie otrzymaliśmy listę z funkcji mapy. Z funkcji FlatMap oceniana jest tylko jedna lista. Wszystkie listy wewnętrzne zostaną usunięte wewnętrznie.

Stąd lista po usunięciu kolekcji wewnętrznych jest generowana jak poniżej.

Wniosek

W tym przewodniku omówiliśmy pomysł monad w Scali. Wprowadziliśmy minimalny zestaw metod, które monada musi wykonać po zaoferowaniu krótkiej definicji monad, która obejmowała jednostkę i mapę płaską. Wreszcie omówiliśmy trzy prawa monady. Biblioteka standardowa Scala ma wiele różnych rodzajów, na które wpływają interesująca i praktyczna idea monad. Rodzaje kolekcji list, drzewa i mapy, aby wymienić kilka, a także opcje, przyszłość i albo są monady.