Nest.JS | Mônadas -> Identidade
A mônada Identity é uma mônada simples que envolve um valor sem aplicar nenhum comportamento ou cálculo adicional. É freqüentemente usado como um bloco de construção para mônadas mais complexas.
A mônada Identity é normalmente implementada como um objeto que possui um único método, chamado run, que pega o valor agrupado e o retorna. A mônada Identity pode ser usada para agrupar um valor e encadear vários cálculos que operam no valor agrupado.
Aqui está um exemplo da mônada Identity em 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 exemplo, você pode criar uma identidade que agrupa um número e, em seguida, usar o mapmétodo para incrementar esse número; você pode encadear várias dessas identidades para criar uma computação mais complexa, sem precisar desempacotar manualmente o valor em cada etapa.
No Nest.js, uma Mônada é um objeto que agrupa um valor e fornece um conjunto de métodos para trabalhar com esse valor de maneira funcional. O Identity Monad é um Monad simples que envolve um valor e não executa nenhuma operação adicional nele.
Aqui está um exemplo de como você pode usar o Identity Monad no 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 extrair o valor agrupado, você pode usar a .valuepropriedade ou o .extract()método
console.log(myService.doSomething().value)
console.log(myService.doSomething().extract())
É importante observar que este exemplo é básico e não demonstra todo o poder das Mônadas na programação funcional. As mônadas podem ser usadas para lidar com vários casos, como tratamento de erros, encadeamento de vários cálculos e muito mais. É melhor entender o problema e os casos de uso antes de aplicar as mônadas.
Lista de peças:





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)