O que a palavra-chave `forall` no Haskell / GHC faz?

Estou começando a entender como a forallpalavra-chave é usada nos chamados "tipos existenciais" como este: data ShowBox = forall s. Show s => SB s Este é apenas um subconjunto, no entanto, de como forallé usado e eu simplesmente não consigo entender meu uso em coisas como esta: runST ::...