ocumentación de @STArray para novatos y preguntas relacionadas con el estado / ST

Tengo dificultades para entenderSTArray de la documentación y otros procedimientos / discusión que he encontrado a través de Google. Tengo algunas preguntas más relacionadas a continuación.

De acuerdo con la documentación,STArrays son

Matrices en caja y sin caja en la mónada ST.

Esto me dio la impresión de queSTArray está destinado a ser utilizado comoestad que se pasa entre funciones (imagine que tiene un vector que debe actualizarse con frecuencia).

Aparentemente, esto se usa de manera diferente:

ST s (STArray s a e)

¿Cuál es el estados ¿aquí? Si se usa internamente, ¿por qué esto no está oculto para el usuario?

Esto también significa, si queremos usar unSTArray s Int Int siendo pasado como estado, uno definiría

type StateArray a = Control.Monad.State (ST s (STArray s Int Int)) a

que parece bastante engorroso.

Finalmente

Cuál es la diferencia entreST yState?Cuál es la diferencia entreSTArray yIOArray, Si elST yIO están destinados para uso "interno"?

¡¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta