Monadi Scala

Monadi Scala
“Le monadi sono costruite in Scala che effettuano calcoli successivi. È un elemento che racchiude l'altro articolo. È importante tenere presente che in questo caso, il risultato di un'operazione in un passo funge da input per un altro calcolo che è il genitore del passo più recente del programma. La monade è un concetto piuttosto che una classe o una caratteristica. La maggior parte delle collezioni Scala sono monadi, sebbene non tutte le monadi siano collezioni; Alcune monadi in Scala sono contenitori come le opzioni. In breve, possiamo affermare che in Scala, tipi di dati come opzioni, elenchi e altri tipi che implementano Map e FlatMap () sono indicati come monadi."

Leggi delle monadi in Scala in Ubuntu 20.04

Garantiamo che qualsiasi successione di distribuzioni delle funzioni di mappa piatta e università si traduca in una monade valida se la monade soddisfa le tre leggi. In altre parole, un valore è ancora soggetto agli effetti della monade. Un pezzo di codice completamente riutilizzabile che risolve un problema generale è ciò che le monadi e le loro regole definiscono un paradigma di progettazione dal punto di vista della programmazione.

Le seguenti tre leggi sulla monade:

Identità sinistra

Secondo l'identità di sinistra, invocare la funzione flatmap per applicare una funzione "f" a un valore "x" che è stato sollevato dalla funzione unitaria è identico all'applicazione della funzione "f" direttamente al valore "x":

Monade.Unità (x).flatmap (f) = f (x)

Giusta identità

Dice che quando viene utilizzata la funzione FlatMap e la funzione dell'unità viene utilizzata come funzione "F", il risultato è il valore monadico iniziale:

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

Associatività

Secondo questa regola, l'uso di una serie di chiamate Flatmap per applicare due funzioni, "F" e "G", a un valore di monade è identico all'uso di "G" da applicare all'output della funzione FlatMap con "F" come il parametro.

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

Vantaggi delle monadi in Scala in Ubuntu 20.04

  • Nel lavoro quotidiano di un programmatore funzionale, le monadi e i trasformatori di monadi sono utili astrazioni.
  • Monad ci consente di costruire programmi in base alle leggi, anche se può sembrare un linguaggio di programmazione a sé stante! Senza un grande flusso di controllo, possiamo combinare molti valori monadici.
  • Di conseguenza, ci sono meno difetti logici nel codice, programmi meglio strutturati e, soprattutto, abbiamo la possibilità di aggiornare i programmi in futuro molto più facilmente senza causare il caos su tutto il pianeta.

Come usare le monadi in Scala in Ubuntu 20.04

Le monadi vengono utilizzate per contenere oggetti e producono le due funzioni corrispondenti:

unità(): Simile alla parola chiave void di Java, unità () non restituisce alcun tipo di dati.

flatmap ():Simile a Scala Function Map (), flatMap () produce invece una serie di elementi rispetto a un singolo componente. Dopo aver applicato una mappa piatta alla sequenza data, viene prodotto un elenco con il raggruppamento interno eliminato e una sequenza creata. Il termine "monadico" si riferisce a raccolte che possono supportare sia la mappa e la mappa.

Esempio n. 1: usando FlatMap e Map per la raccolta in Scala in Ubuntu 20.04

Occasionalmente, una monade ricorderà a un contenitore di utilizzare un'interfaccia specifica quando si lavora con i suoi valori. La monade può assomigliare a una scatola con un oggetto all'interno se lo modelliamo. Possiamo recuperare questo oggetto usando Flatmap e un'altra mappa delle funzioni pratiche.

A questo programma Scala, abbiamo definito l'oggetto come "myobject1" quando viene creato l'oggetto "myobject1". Ora, all'interno del "myobject1", abbiamo implementato la definizione della funzione principale di Scala. Questa funzione funge da punto di partenza primario per l'esecuzione di qualsiasi codice Scala. All'interno della funzione principale di Scala, abbiamo la dichiarazione delle variabili come "L1" e "L2". A queste variabili, abbiamo assegnato "elenco" e "elenco" da inizializzare con i quattro numeri diversi, rispettivamente.

Quindi, abbiamo un'altra variabile, "L3" in cui abbiamo applicato la FlatMapfunction e all'interno della funzione FlatMap, abbiamo invocato la funzione della mappa. Innanzitutto, la funzione MAP ha calcolato l'elenco; Successivamente, la mappa flat ha valutato l'elenco. L'elenco sarà generato dalla funzione println mentre abbiamo passato la variabile "L3" perché "L3" ha un'operazione di monadi.

Abbiamo un elenco diverso quando viene applicata la funzione mappa, ma alla fine l'elenco seguente viene generato dopo aver applicato la funzione FlatMap.

Esempio n. 2: usando una mappa piatta per la rimozione del gruppo interno in Scala in Ubuntu 20.04

Abbiamo spiegato la funzione di Flatmap nello script Scala sopra menzionato con l'output. Ora, in questa particolare istanza Scala, abbiamo rimosso il raggruppamento interno delle raccolte utilizzando l'applicazione FlatMap ().

Abbiamo stabilito l'oggetto Scala come "myobject2". Quindi, abbiamo sollevato la definizione del metodo principale all'interno del "myobject2". La definizione principale ha l'argomento della riga di comando per supportare le funzioni Scala. Il metodo principale viene ampliato con la dichiarazione delle variabili e del funzionamento. Abbiamo definito le due variabili "P" e "Q" che hanno l'elenco dei numeri all'interno dell'intervallo.

Gli elementi del set vengono restituiti come elenco con il metodo Tolist (). Successivamente, abbiamo applicato la mappa flat e quindi la funzione della mappa, che viene invocata all'interno della variabile "L3". Innanzitutto, l'elenco viene calcolato dall'operazione "I*J". Quindi, abbiamo ottenuto l'elenco dalla funzione della mappa. Dalla funzione flatmap, viene valutato solo un elenco. Tutti gli elenchi interni verranno rimossi internamente.

Quindi l'elenco dopo la rimozione delle raccolte interne viene generato come di seguito.

Conclusione

Abbiamo discusso dell'idea delle monadi in Scala in questa guida. Abbiamo introdotto il set minimo di metodi che una monade deve eseguire dopo aver offerto una breve definizione di monadi, che includeva l'unità e la mappa flat. Abbiamo discusso infine le tre leggi sulla monade. La biblioteca standard Scala ha un'ampia varietà di tipi che sono tutti influenzati dall'idea interessante e pratica delle monadi. I tipi di raccolta di elenchi, albero e mappa, per menzionarne alcuni, oltre all'opzione, al futuro e entrambi, sono tutte monadi.