[Haskell-cafe] Best way to implement "scoped exceptions"?