Nido.JS | Mónadas -> Identidad
La mónada Identity es una mónada simple que envuelve un valor sin aplicar ningún comportamiento o cálculo adicional. A menudo se utiliza como bloque de construcción para mónadas más complejas.
La mónada de identidad generalmente se implementa como un objeto que tiene un solo método, llamado run, que toma el valor envuelto y lo devuelve. La mónada de identidad se puede utilizar para envolver un valor y encadenar varios cálculos que operan en el valor envuelto.
Aquí hay un ejemplo de la mónada Identity en JavaScript:
class Identity {
constructor(value) {
this.value = value;
}
map(f) {
return new Identity(f(this.value));
}
chain(f) {
return f(this.value);
}
run() {
return this.value;
}
}
Por ejemplo, podría crear una Identidad que envuelva un número y luego usar el mapmétodo para incrementar ese número, luego podría encadenar varias de estas Identidades para crear un cálculo más complejo, sin tener que desenvolver manualmente el valor en cada paso.
En Nest.js, una mónada es un objeto que envuelve un valor y proporciona un conjunto de métodos para trabajar con ese valor de manera funcional. Identity Monad es una mónada simple que envuelve un valor y no realiza ninguna operación adicional en él.
Aquí hay un ejemplo de cómo podría usar Identity Monad en Nest.js:
import { Injectable } from '@nestjs/common';
import { Identity } from 'fp-ts/lib/Identity';
@Injectable()
export class MyService {
public doSomething(): Identity<string> {
return new Identity('Hello, World!');
}
}
Para extraer el valor envuelto, puede usar la .valuepropiedad o el .extract()método
console.log(myService.doSomething().value)
console.log(myService.doSomething().extract())
Es importante tener en cuenta que este ejemplo es básico y no demuestra todo el poder de Monads en la programación funcional. Las mónadas se pueden usar para manejar varios casos, como el manejo de errores, el encadenamiento de múltiples cálculos y más. Es mejor comprender el problema y los casos de uso antes de aplicar las mónadas.
Lista de piezas:

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































