2010-02-16 12 views
6

La documentazione Control.Exception dice che posso fare le seguenti operazioni per creare la mia propria eccezione:Come definire un'eccezione personalizzata in Haskell?

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

instance Exception MyException 

Se incollo questo in un file e compilare (dopo l'importazione Control.Exception e Data.Typeable), ottengo:

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' 

Devo attivare questa estensione per avere eccezioni definite dall'utente? In caso contrario, per favore, fornire un esempio. Grazie.

risposta

5

Sì, è necessario attivare tale estensione. Non è una buona idea provare a scrivere l'istanza Typeable a mano perché ha alcuni legami con le parti interne di GHC.

+1

Ciò significa che in generale, nessuna eccezione definita dall'utente in Haskell? – me2

+2

Se si intende lo standard Haskell, non ci sono eccezioni definite dall'utente. Se intendi la lingua estesa implementata da GHC, allora esistono, come sopra. –

Problemi correlati