throwDynがない?
GHC 6.10.1にアップデートしたらコンパイルできなくなった。
どうやらthrowDynがなくなったらしい。その代わり,6.10.1からはExceptionそのものをユーザが拡張できるようになったようだ。自分でExceptionをつくりたい場合はExceptionクラスのインスタンスをつくればよい。
class (Typeable e, Show e) => Exception e where toException :: e -> SomeException fromException :: SomeException -> Maybe e
下記のように書いたらコンパイル通った。
data StoreException = NoSpaceException deriving (Typeable,Show) instance Exception StoreException where toException e = SomeException e fromException (SomeException _) = Just NoSpaceException
今まではStoreExceptionをTypeableにしてthrowDynとcatchDynを用いて例外処理を行ってたわけだが,今後は普通にthrowとcatchでたぶんいける。
SomeExceptionがどんなものなのかがいまいちつかめていない。
参考:http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Exception.html