[Haskell-beginners] How are complex Errors implemented