views:

121

answers:

1

The Control.Exception documentation says I can do the following to create my own exception:

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

 instance Exception MyException

If I paste this into a file and compile (after importing Control.Exception and Data.Typeable), I get:

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'

Must I turn on this extension in order to have user-defined exceptions? If not, someone please provide an example. Thanks.

+3  A: 

Yes, you need to turn on that extension. It's not a good idea to try to write the Typeable instance by hand because it has some ties to the internals of GHC.

Ganesh Sittampalam
Does this mean that in general, no user-defined exceptions in Haskell?
me2
If you mean the Haskell standard, then there are no user-defined exceptions. If you mean the extended language implemented by GHC, then they do exist, as above.
Ganesh Sittampalam