Czy IO monad ma sens w języku takim jak C #

Po spędzeniu dużo czasu na czytaniu i myśleniu, myślę, że wreszcie zrozumiałem, czym są monady, jak działają i do czego są przydatne. Moim głównym celem było ustalenie, czy monady byłyby czymś, co mógłbym zastosować do mojej codziennej pracy w C #.

Kiedy zacząłem uczyć się o monadach, odniosłem wrażenie, że są magiczne i że w jakiś sposób czynią IO i inne nieczyste funkcje czystymi.

Rozumiem, że znaczenie monad dla rzeczy takich jak LINQ w .Net i Maybe jest bardzo przydatne do radzenia sobie z funkcjami, które nie zwracają poprawnych wartości. Doceniam także potrzebę ograniczenia stanowości kodu i odizolowania zewnętrznych zależności, a ja miałem nadzieję, że monady też w tym pomogą.

Ale w końcu doszedłem do wniosku, że monady na IO i stan obsługi są konieczne dla Haskella, ponieważ Haskell nie ma innego sposobu, aby to zrobić (w przeciwnym razie nie można zagwarantować sekwencjonowania, a niektóre połączenia będą zoptymalizowane.) Jednak w przypadku języków głównego nurtu monady nie są dobrze dopasowane do tych potrzeb, ponieważ większość języków już z łatwością radzi sobie z nimi i określa ich stan.

Więc moje pytanie brzmi: czy można powiedzieć, że monada IO jest naprawdę przydatna tylko w Haskell? Czy istnieje dobry powód, aby wdrożyć monadę IO w, powiedzmy, C #?

questionAnswers(6)

yourAnswerToTheQuestion