2010-02-16 18 views
6

Control.Exception belgeleri ben kendi istisna oluşturmak için aşağıdaki yapabileceğini söylüyor: I (Control.Exception ve Data.Typeable ithal sonra) bir dosyaya yapıştırın ve derlemekHaskell'de özel bir istisna nasıl tanımlanır?

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

instance Exception MyException 

, alıyorum:

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' 

Ben kullanıcı tanımlı istisnalar sahip olmak için bu uzantıyı açmak zorunda mıdır? Değilse, biri lütfen bir örnek verin. Teşekkürler.

cevap

5

Evet, bu uzantıyı açmanız gerekiyor. Typeable örneğini elle yazmak iyi bir fikir değildir, çünkü GHC'nin içeriğiyle bazı bağları vardır.

+1

Bu, genel olarak, Haskell'de kullanıcı tanımlı istisnalar olmadığı anlamına mı geliyor? – me2

+2

Haskell standardını kastediyorsanız, kullanıcı tanımlı istisnalar yoktur. GHC tarafından uygulanan genişletilmiş dili kastediyorsanız, yukarıdaki gibi var olurlar. –

İlgili konular