Monad etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Monad etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

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() ) );