İçeriğe geç

Functional Programing – Monad

Merhabalar bu yazımda Fonksiyonel Programlamanın önemli konularından Monad nedir ? konusuna değinip, bu konu hakkında örnek paylaşacağım.

Fonksiyonel Programlama matematiksel olarak modellenebilen yapılar için büyük kolaylık sağlar. Günümüzün önemli konularından olan Dağıtık Mimariler içinde fonksiyonel programlama yapısı büyük önem taşımaktadır. Bu mimarilerin programlama disiplinini bu yapı oluşturur.

Monad konusuna değinmeden önce bu programlama yapısı hakkında birkaç ekleme daha yapayım. Bu yapıda döngüler, değişkenler bulunmaz. Bu yüzden tüm bu işlemler birer fonksiyon olarak gerçekleştirilir ve döngü işlemleri recursive olarak yapılır. Değişken yapıları olmadığı için side-effect (yan etki) durumu yoktur. Bu durum değişiklik yapılma durumunun olmamasıdır. Yani fonksiyon içerisinde scope dışındaki bir değişkenin değerinin değiştirilmesi örneğini verebiliriz. Bazı durumlarda olay side-effect’ e zorlanabilir. Bu gibi durumlar için Monad kontrollü side-effect desteği verir. Bu işlem için geliştirilmiş bir tekniktir.

Aşağıdaki örnekte Monad işlemini Swift ile örnekleyelim.

Monad tekniği ile Context içindeki bir değeri geçici olarak dışarı çıkarılıp, ona bir değişiklik uygulayıp tekrar context’e sokulur.

Gördüğümüz bu Functor -> Applicative -> Monad tekniklerini güzel bir şekilde resimde özetlenmiş.

  • Functor işlem olarak – map()
  • Applicative işlem olarak apply()
  • Monad işlem olarak flatMap() kullanır.

Genel olarak Nesne yönelimli mimariler üzerinde çalıştığımız için anlaması ve alışılması kolay konular değildir. Ancak oldukça işlevsel ve yararlı konulardır. Programlama dilleri birer araçtır. Bunlarla ne yapabileceğiniz teknikler ve algoritma bilginize bağlı. işin mantığını anlamak her zaman daha önemlidir.

Tarih:Functional Programing

Bu yazı yorumlara kapalı.