Как определить пользовательское исключение в Haskell? - PullRequest
6 голосов
/ 16 февраля 2010

В документации Control.Exception говорится, что я могу сделать следующее, чтобы создать собственное исключение:

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

 instance Exception MyException

Если я вставлю это в файл и скомпилирую (после импорта Control.Exception и Data.Typeable), я получу:

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'

Должен ли я включить это расширение, чтобы иметь определенные пользователем исключения? Если нет, то, пожалуйста, предоставьте пример. Спасибо.

1 Ответ

5 голосов
/ 16 февраля 2010

Да, вам нужно включить это расширение. Не стоит пытаться писать экземпляр Typeable вручную, потому что он имеет некоторые связи с внутренними компонентами GHC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...