Объявления типа внешней привязки без ScopedTypeVariables
У меня есть следующее рабочее определение:
{-# 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
Просто из любопытства мне интересно, как я мог бы реализовать это, не используяScopedTypeVariables
прагма, или могу ли я вообще, и что предполагаемое объявление типаprocessError
на самом деле, потому что указаниеprocessError :: IOException -> IO a
делает его некомпилируемым