higher-rank-types

¿Cuál es el propósito de Rank2Types?

No soy realmente competente en Haskell, así que esta podría ser una pregunta muy fácil. ¿Qué limitaciones de lenguaje resuelven Rank2Types? ¿Las funciones de Haskell no soportan argumentos polimórficos?

Documentación de STArray para principiantes y preguntas relacionadas con el Estado/ST

Tengo dificultades para entender STArray de la documentación y otros howtos/discusión que he encontrado a través de Google. T ... erencia entre ST y State? ¿cuál es la diferencia entre STArray y IOArray, si el ST y IO son para uso "interno"? ¡Gracias!!

¿Hay alguna ventaja de usar Rank2Types a favor de RankNTypes?

Por lo que sé, existe un algoritmo de comprobación de tipos decidibles (solo) para tipos rank-2. ¿Utiliza GHC de alguna maner ... erencia de tipos? En caso afirmativo, ¿lo usa GHC? ¿Hay otras ventajas de los tipos de rango-2 sobre los tipos de rango- n?

Por qué la restricción de clase en el sinónimo de tipo necesita RankNTypes

Esto compila bien: type List a = [a] Pero cuando introduzco una restricción de clase, el compilador pide RankNTypes que se ... t; f b) -> (a -> f a)) desde este post y descubrí que realmente necesitaba RankNTypes debido a la restricción Functor.

¿Caso de uso para polimorfismo de rango 3 (o superior)?

He visto algunos casos de uso para el polimorfismo rank-2 (el ejemplo más prominente es la ST monad), pero ninguno para un rango más alto que eso. ¿Alguien sabe de tal caso de uso?