Yuva.JS | Monadlar -> Liste
ListMonad olarak da bilinen monad , Arraybirden fazla olası sonuca sahip olabilen hesaplamaları temsil etmek için kullanılan bir monaddır. Bir diziyi saran ve dizi üzerinde map, chain, , vb. gibi monadik yöntemleri kullanmanızı sağlayan bir monaddır .flatMap
Monad tipik olarak, bir dizinin her öğesine bir işlev uygulayan ve sonuçları birleştiren Listtek bir yöntemi olan bir nesne olarak uygulanır .flatMap
İşte ListJavaScript'teki bir monad örneği:
class List {
constructor(values) {
this.values = values;
}
flatMap(f) {
return new List(this.values.reduce((acc, x) => acc.concat(f(x)), []));
}
}
const list = new List([1, 2, 3]);
const result = list.flatMap(x => [x * 2, x * 3]);
console.log(result.values); // [2, 3, 4, 6, 6, 9]
Örneğin, bir sayı dizisini saran bir a oluşturabilir Listve ardından bu flatMapyöntemi kullanarak dizinin her bir öğesine bir işlev uygulayabilir ve sonuçları birleştirebilirsiniz. Daha sonra, daha karmaşık bir hesaplama oluşturmak için bu hesaplamaların birçoğunu zincirleyebilirsiniz.
ListMonad'ı Nest.js'de nasıl kullanabileceğinize dair bir örneği burada bulabilirsiniz :
import { Injectable } from '@nestjs/common';
import { List } from 'fp-ts/lib/List';
@Injectable()
export class MyService {
public async getUsers(): Promise<List<User>> {
const users = await this.userRepository.find();
return List.fromArray(users);
}
public async getUserById(id: string): Promise<List<User>> {
const user = await this.userRepository.findOne(id);
return List.of(user);
}
}
.map(), .filter(), yöntemlerini kullanarak birden çok hesaplamayı zincirleyebilirsiniz .reduce().
myService.getUsers()
.map(users => users.filter(user => user.age > 18))
.map(users => users.map(user => user.name))
.map(users => users.reduce((acc, curr) => acc + ', ' + curr))
.fold(error => console.log(error), result => console.log(result))
Bu örneğin temel bir örnek olduğunu ve işlevsel programlamada Monad'ların tam gücünü göstermediğini not etmek önemlidir. Monad'lar, hata işleme, çoklu hesaplamaları zincirleme ve daha fazlası gibi çeşitli durumları ele almak için kullanılabilir, monad'ları uygulamadan önce sorunu ve kullanım durumlarını anlamak en iyisidir.
parça listesi:

![Bağlantılı Liste Nedir? [Bölüm 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































