[Haskell-beginners] Best practice for catching pure errors in IO?