26 Mayıs 2023 Cuma

Monad

Giriş
Functional dillerde Monad, Function Composition için kullanılır

Örnek
Şöyle yaparız
bread = bake( mill(wheat) )
Java'da Monad yok. Ancak benzer bir sonucu iki farklı şekilde yapabiliriz.

1. Chaining Methods
2. Optional Kullanarak

1. Chaining Methods
Örnek
Şöyle yaparız
public Optional<Flour> mill(Wheat wheat) {
   // ...
}

public Optional<Bread> bake(Flour flour) {
   // ...
}

Optional<Bread> oopBread = harvest()
      .flatMap(wheat -> mill(wheat))
      .flatMap(flour -> bake(flour));
2. Optional Kullanarak
Diğer dillerde Maybe<>, Either<>, Optional<> gibi yapılar var Java'da sadece Optional var. Bu kullanım biraz daha Functional dillere benziyor. Ancak halen exception handling sıkıntısı var. Three Exception-Handling Alternatives Inspired by Functional Programming yazısına bakabilirsiniz

Örnek
Şöyle yaparız
public Optional<Flour> mill(Optional<Wheat> wheat) {
   // ...
}

public Optional<Bread> bake(Optional<Flour> flour) {
   // ...
}

Optional<Bread> fpBread = bake( mill( harvest() ) );

Hiç yorum yok:

Yorum Gönder