¿Por qué Haskell no tiene una Mónada I (solo para entrada, a diferencia de la mónada IO)?

Conceptualmente, parece que un cálculo que realiza la salida es muy diferente de uno que realiza solo la entrada. Este último es, en cierto sentido, mucho más puro.

I, por mi parte, me gustaría tener una manera de separar las partes de entrada de mi programa de las que realmente podrían escribir algo.

Entonces, ¿por qué no hay entrada solo Monad?

¿Alguna razón por la que no funcionaría tener una Mónada I (y una Mónada O, que podría combinarse en la Mónada IO)?

Edita: Me refería principalmente a la entrada como leer archivos, no interactuar con el usuario. Este también es mi caso de uso, donde puedo suponer que los archivos de entrada no cambian durante la ejecución del programa (de lo contrario, está bien tener un comportamiento indefinido).

Respuestas a la pregunta(5)

Su respuesta a la pregunta