FP’de ilgilenilen “patlama” ile sonuçlanan en büyük yeniliklerden biri monadlar.
1992 yılının Ocak ayında, Philip Wadler İşlevsel Programlamanın Özü adlı bir yazı yazdı ve monoları işlevsel programlamaya IO ile başa çıkmanın bir yolu olarak getirdi.
Saf, tembel, fonksiyonel programlama dilleri ile ilgili en büyük sorun, IO ile başa çıkmada yardımcı oldu. Programlamada "Garip Takım" üyelerinden biri, çünkü "tembellik ve yan etkiler, pratik bir bakış açısıyla uyumlu değil. Tembel bir dil kullanmak istiyorsanız, tamamen işlevsel bir dil olmak zorunda; yan etkileri kullanmak istiyorsan, katı bir dil kullansan iyi edersin. " Referans
Monad'lardan önceki IO ile ilgili sorun, saflığın sürdürülmesinin hiçbir şey için gerçekten yararlı olmayan programlar için mümkün olmamasıydı. IO ile kullanıcı veya ortamdan girdi ve çıktı almak da dahil olmak üzere değişen durumlarla ilgilenen her şeyi kastediyoruz. Saf işlevsel programlamada, tembellik ve saflığı sağlamak için her şey değişkendir (yan etkilerden arınmış).
Monad'lar IO problemini nasıl çözer? Peki, monadları çok fazla tartışmadan, temel olarak "Dünya" yı (çalışma zamanı ortamı) monadın girişi olarak alırlar ve çıktı olarak yeni bir "Dünya" oluştururlar ve sonuç: tür IO a = Dünya -> (a, Dünya).
FP bu nedenle ana akıma giderek daha fazla girdi, çünkü en büyük sorun olan IO (ve diğerleri) çözüldü. Bildiğiniz gibi, mevcut OO dillerine entegrasyon da oluyor. LINQ, örneğin içinden ve içinden monadlardır.
Daha fazla bilgi için, monadları ve cevabımda belirtilen makaleleri okumanızı tavsiye ederim.