Äußerlich gebundene Typdeklarationen ohne ScopedTypeVariables
Ich habe folgende Arbeitsdefinition:
{-# 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
Aus reiner Neugier frage ich mich, wie ich das ohne den Einsatz von neu implementieren könnteScopedTypeVariables
Pragma, oder ob ich das überhaupt könnte, und worauf die Typdeklaration schließen lässtprocessError
ist eigentlich, weil spezifizierenprocessError :: IOException -> IO a
macht es unkompilierbar.