Nella documentazione per Control.Exception nella versione 4.4.0.0 di base è disponibile un esempio di come creare gerarchie di eccezioni. L'esempio mostra come è possibile rilevare le generalizzazioni di specifiche eccezioni dichiarando le istanze della classe Exception in termini dell'eccezione genitore. Questo è bello, ma come faccio a rendere le mie eccezioni figli di eccezioni esistenti. Ad esempio, desidero rendere le eccezioni catturate dai vincoli di tipo su IOException. L'esempio in questo Control.Exception mostra:Eccezioni IO estensibili Haskell?
*Main> throw MismatchedParentheses catch (\e -> putStrLn ("Caught " ++ show (e :: SomeCompilerException)))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses catch (\e -> putStrLn ("Caught " ++ show (e :: IOException)))
*** Exception: MismatchedParentheses
Come posso ottenere vincoli IOException per prendere il mio eccezioni?
Sembra che Haddock non abbia reso correttamente la documentazione. Clicca sul collegamento ipertestuale 'Origine' per vedere la definizione corretta (se lo copio qui SO probabilmente lo renderà anche male ...) –