¿Qué hace la palabra clave `forall` en Haskell / GHC?

Estoy empezando a entender cómo forallse usa la palabra clave en los llamados "tipos existenciales" como este: data ShowBox = forall s. Show s => SB s Sin embargo, esto es solo un subconjunto de cómo forallse usa y simplemente no puedo entender cómo se usa en cosas como esta: runST :: forall...