¿Tiene sentido una mónada IO en un lenguaje como C #?

Después de pasar mucho tiempo leyendo y pensando, creo que finalmente he comprendido qué son las mónadas, cómo funcionan y para qué sirven. Mi objetivo principal era averiguar si las mónadas eran algo que podría aplicar a mi trabajo diario en C #.

Cuando comencé a aprender sobre las mónadas, tuve la impresión de que son mágicas y que de alguna manera hacen que las IO y otras funciones no puras sean puras.

Entiendo la importancia de las mónadas para cosas como LINQ en .Net, y Maybe es muy útil para tratar con funciones que no devuelven valores válidos. Y también aprecio la necesidad de limitar la permanencia en el código y aislar las dependencias externas, y esperaba que las mónadas también ayuden con eso.

Pero finalmente he llegado a la conclusión de que las mónadas para IO y el estado de manejo son una necesidad para Haskell, porque Haskell no tiene otra forma de hacerlo (de lo contrario, no podría garantizar la secuenciación, y algunas llamadas se optimizarían de inmediato). Pero para los lenguajes más comunes, las mónadas no son una buena opción para estas necesidades, ya que la mayoría de los idiomas ya se manejan y establecen fácilmente.

Entonces, mi pregunta es, ¿es justo decir que la mónada IO es realmente solo útil en Haskell? ¿Hay una buena razón para implementar una mónada IO en, digamos, C #?

Respuestas a la pregunta(6)

Su respuesta a la pregunta