Gniazdo.JS | Monady -> Tożsamość

Jan 27 2023
Monada tożsamości jest prostą monadą, która zawija wartość bez stosowania dodatkowego zachowania lub obliczeń. Jest często używany jako element konstrukcyjny dla bardziej złożonych monad.

Monada tożsamości jest prostą monadą, która zawija wartość bez stosowania dodatkowego zachowania lub obliczeń. Jest często używany jako element konstrukcyjny dla bardziej złożonych monad.

Monada tożsamości jest zwykle implementowana jako obiekt, który ma pojedynczą metodę o nazwie run, która pobiera opakowaną wartość i zwraca ją. Monady Identity można użyć do zawijania wartości i łączenia wielu obliczeń, które działają na opakowanej wartości.

Oto przykład monady tożsamości w 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;
  }
}

Na przykład, możesz utworzyć Tożsamość, która zawija liczbę, a następnie użyć metody mapdo zwiększenia tej liczby, możesz następnie połączyć ze sobą wiele tych Tożsamości, aby utworzyć bardziej złożone obliczenia, bez konieczności ręcznego rozwijania wartości na każdym kroku.

W Nest.js monada jest obiektem, który opakowuje wartość i zapewnia zestaw metod do pracy z tą wartością w funkcjonalny sposób. Monada tożsamości jest prostą monadą, która opakowuje wartość i nie wykonuje na niej żadnych dodatkowych operacji.

Oto przykład, jak można wykorzystać monadę tożsamości w pliku 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!');
  }
}

Aby wyodrębnić opakowaną wartość, możesz użyć .valuewłaściwości lub .extract()metody

console.log(myService.doSomething().value)
console.log(myService.doSomething().extract())

Należy zauważyć, że ten przykład jest prosty i nie pokazuje pełnej mocy monad w programowaniu funkcjonalnym. Monad można używać do obsługi różnych przypadków, takich jak obsługa błędów, łączenie wielu obliczeń i nie tylko. Najlepiej zrozumieć problem i przypadki użycia przed zastosowaniem monad.

Lista części: