2010-02-16 16 views
6

La documentación Control.Exception dice que puedo hacer lo siguiente para crear mi propia excepción:¿Cómo se define una excepción personalizada en Haskell?

data MyException = ThisException | ThatException 
    deriving (Show, Typeable) 

instance Exception MyException 

Si me pega esto en un archivo y compilar (después de importar Control.Exception y Data.Typeable), me sale:

exp.hs:6:20: 
    Can't make a derived instance of `Typeable MyException' 
     (You need -XDeriveDataTypeable to derive an instance for this class) 
    In the data type declaration for `MyException' 

¿Debo activar esta extensión para tener excepciones definidas por el usuario? Si no, alguien por favor da un ejemplo. Gracias.

Respuesta

5

Sí, debe activar esa extensión. No es una buena idea intentar escribir la instancia Typeable a mano porque tiene algunos vínculos con las partes internas de GHC.

+1

¿Esto significa que, en general, no hay excepciones definidas por el usuario en Haskell? – me2

+2

Si te refieres al estándar Haskell, entonces no hay excepciones definidas por el usuario. Si se refiere al lenguaje extendido implementado por GHC, entonces existen, como se indicó anteriormente. –

Cuestiones relacionadas