Declarações de tipo de limite externo sem ScopedTypeVariables
Eu tenho uma definição de trabalho a seguir:
{-# 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
Apenas por curiosidade eu estou querendo saber como eu poderia reimplementar isso sem utilizar oScopedTypeVariables
pragma, ou se eu poderia em tudo, e que tipo de declaração inferida deprocessError
na verdade é, porque especificandoprocessError :: IOException -> IO a
faz com que seja uncompilable.