2010-02-16 5 views
6

La documentation Control.Exception dit que je peux faire ce qui suit pour créer ma propre exception:Comment définir une exception personnalisée dans Haskell?

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

instance Exception MyException 

Si je coller dans un fichier et compilent (après l'importation Control.Exception et Data.Typeable), je reçois: Dois-je activer cette extension afin d'avoir des exceptions définies par l'utilisateur?

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' 

Si non, quelqu'un s'il vous plaît fournir un exemple. Merci.

Répondre

5

Oui, vous devez activer cette extension. Ce n'est pas une bonne idée d'essayer d'écrire l'instance Typeable à la main car elle a des liens avec les internes de GHC.

+1

Cela signifie-t-il qu'en général, aucune exception définie par l'utilisateur dans Haskell? – me2

+2

Si vous parlez du standard Haskell, il n'y a pas d'exception définie par l'utilisateur. Si vous parlez du langage étendu implémenté par GHC, alors ils existent, comme ci-dessus. –

Questions connexes