Declaraciones de tipo de enlace externo sin ScopedTypeVariables

Tengo una siguiente definición de trabajo:

{-# LANGUAGE ScopedTypeVariables #-}
module Control.Retry where

import Prelude hiding (catch)
import Control.Exception
import Control.Concurrent

retrying [] action = action 
retrying (i:is) action = catch action processError
  where 
    processError (e :: IOException) = threadDelay i >> retrying is action

Solo por curiosidad, me pregunto cómo podría reimplementar esto sin utilizar elScopedTypeVariables pragma, o si puedo, y cuál es la declaración de tipo inferida deprocessError En realidad es, porque especificando.processError :: IOException -> IO a lo hace no compilable.

Respuestas a la pregunta(3)

Su respuesta a la pregunta