Monadlar basitçe
Kısaca: Monad, “ek davranış” taşıyan hesaplamaları (sonuçsuzluk, hata, liste, yan etki) temiz biçimde art arda zincirlemek için bir desendir.
Biraz daha ayrıntılı: Bir değeri bir kaba sarar ve bir işlevi içeriğe uygulayan, bu sırada ek davranışı kendisi halleden bir işlem (bind, flatMap) sunar.
Ayrıntılı
- Option/Maybe: Bir değer ya da “hiçbir şey”.
flatMapsonraki işlevi yalnızca değer varsa çalıştırır. Bu, iç içe null denetimlerini ortadan kaldırır. - Result/Either: Başarı ya da hata. İlk hata zinciri keser.
- Liste:
flatMapher öğeye bir işlev uygular ve sonuçları düzleştirir. - Promise/Future: Daha sonra gelen bir değer.
then,bind’e karşılık gelir. - Yasalar: Sol birim, sağ birim ve birleşme özelliği, zincirlerin öngörülebilir biçimde yeniden düzenlenebilmesini sağlar.
- Anımsatıcı: Monad, her adımın girdisini zaten “paketten çıkarılmış” aldığı bir montaj hattıdır.
Ayrıca bak: Currying