Monads Scala

Monads Scala
“Monader er konstruert i Scala som utfører påfølgende beregninger. Det er et element som omslutter det andre elementet. Det er viktig å huske på at i dette tilfellet fungerer resultatet av en operasjon på ett trinn som inngangen til en annen beregning som er forelderen til det siste trinnet i programmet. Monad er et konsept i stedet for en klasse eller en karakteristikk. Flertallet av Scala -samlingene er monader, selv om ikke alle monader er samlinger; Noen monader i Scala er containere som alternativer. I et nøtteskall kan vi oppgi at i Scala blir datatyper som alternativer, lister og andre slag som implementerer kart og flatmap () referert til som monader.”

Laws of Monads in Scala i Ubuntu 20.04

Vi sikrer at enhver rekke distribusjoner av flatmappen og enhetsfunksjonene resulterer i en gyldig monad hvis monaden oppfyller de tre lovene. Med andre ord, en verdi er fremdeles underlagt effekten av monaden. Et fullstendig gjenbrukbart stykke kode som løser et generelt problem er det som monader og deres regler definerer som et designparadigme fra perspektivet til programmering.

Følgende tre monadlover:

Venstre identitet

I henhold til venstre identitet er det å påkalle flatmapfunksjonen for å anvende en funksjon "F" på en verdi "x" som ble hevet av enhetsfunksjonen identisk for å anvende funksjonen "F" rett på verdien "x":

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

Riktig identitet

Den sier at når flatmapfunksjonen brukes, og enhetsfunksjonen brukes som funksjonen "F", er utfallet den første monadiske verdien:

x.flatmap (y => monad.enhet (y)) = x

Assosiativitet

I henhold til denne regelen, ved å bruke en serie flatmap -anrop for å anvende to funksjoner, "f" og "g", er en monadverdi identisk med å bruke "g" for å gjelde utgangen fra flatmap -funksjonen med "f" som parameter.

x.flatmap (f).flatmap (g) = o.flatmap (x => f (x).FlapMap (G))

Fordeler med monader i Scala i Ubuntu 20.04

  • I det daglige arbeidet med en funksjonell programmerer er monader og monadtransformatorer nyttige abstraksjoner.
  • Monad lar oss konstruere programmer basert på lovene, selv om det kan se ut til å være et programmeringsspråk for seg selv! Uten mye kontrollstrøm kan vi kombinere mange monadiske verdier.
  • Som et resultat er det færre logiske feil i koden, bedre strukturerte programmer, og viktigst av alt, vi har muligheten til å oppdatere programmer i fremtiden mye lettere uten å forårsake ødeleggelser på hele planeten.

Hvordan bruke monader i Scala i Ubuntu 20.04

Monader brukes til å inneholde objekter, og de produserer de tilsvarende to funksjonene:

enhet(): I likhet med Javas void nøkkelord, returnerer ikke enhet () noen datatyper.

flatmap ():I likhet med Scala -funksjonskartet () produserer flatmap () i stedet en serie elementer i motsetning til en enkelt komponent. Etter å ha påført en flatmap på den gitte sekvensen, produseres en liste med den indre gruppering eliminert og en sekvens opprettet. Begrepet "monadisk" refererer til samlinger som kan støtte både flatmap og kart.

Eksempel 1: Bruke flatmap og kart for samlingen i Scala i Ubuntu 20.04

Noen ganger vil en monad minne en beholder om å bruke et spesifikt grensesnitt når man jobber med verdiene. Monad kan ligne en boks med et objekt inne hvis vi modellerer den selv. Vi kan hente dette objektet ved hjelp av flatmap og ett mer praktisk funksjonskart.

Til dette Scala -programmet har vi definert objektet som "MyObject1" som objektet "MyObject1" er opprettet. Nå, innenfor "MyObject1", har vi implementert definisjonen av Scala hovedfunksjon. Denne funksjonen fungerer som det primære utgangspunktet for å kjøre en hvilken som helst skalakode. Innenfor Scalas hovedfunksjon har vi erklæringen om variablene som “L1” og “L2”. Til disse variablene har vi tildelt henholdsvis "listen" og "listen" som skal initialiseres med de fire forskjellige tallene.

Deretter har vi en annen variabel, “L3” der vi har brukt flatmapfunksjonen, og innenfor flatmapfunksjonen har vi påkalt kartfunksjonen. Først beregnet kartfunksjonen listen; Etterpå evaluerte flatmappen listen. Listen vil bli generert av Println -funksjonen da vi har gitt variabelen “L3” til den fordi “L3” har en Monads -operasjon.

Vi har en annen liste når kartfunksjonen blir brukt, men til slutt genereres listen nedenfor etter å ha brukt flatmapfunksjonen.

Eksempel 2: Bruke en flatmap for å fjerne intern gruppe i Scala i Ubuntu 20.04

Vi har forklart funksjonen til flatmappen i det nevnte Scala -skriptet med utgangen. Nå, i denne spesielle Scala -forekomsten, har vi fjernet den indre gruppering av samlingene ved å bruke FlatMap () -applikasjonen.

Vi har etablert Scala -objektet som "MyObject2". Deretter løftet vi hovedmetodedefinisjonen i "MyObject2". Hoveddefinisjonen har kommandolinjeargumentet for å støtte Scala -funksjonene. Hovedmetoden utvides med erklæringen om variablene og driften. Vi har definert de to variablene “P” og “Q” som har listen over tall innenfor området.

Settets elementer blir returnert som en liste etter Tolist () -metoden. Etter det anvendte vi flatmappen og deretter kartfunksjonen, som påberopes inne i variabelen “L3”. Først beregnes listen fra operasjonen “I*j”. Deretter fikk vi listen fra kartfunksjonen. Fra flatmap -funksjonen er bare en liste evaluert. Alle de interne listene blir fjernet internt.

Derfor genereres listen etter fjerning av de interne samlingene som nedenfor.

Konklusjon

Vi diskuterte ideen om monader i Scala i denne guiden. Vi introduserte det minimale settet med metoder som en monad må utføre etter å ha tilbudt en kort definisjon av monader, som inkluderte enheten og flatmappen. Vi diskuterte de tre monadlovene i slutt. Scala Standard Library har et bredt utvalg av typer som alle er påvirket av den interessante og praktiske ideen om monader. Samlingstyper av lister, tre og kart, for å nevne noen få, så vel som alternativ, fremtid og enten, er alle monader.