Err package:lens

Make a Monoid out of Either for error handling.
errno leading to this error, if any.
What type of error it is
This is thrown when the user calls error.
A class method without a definition (neither a default definition, nor a definition in the appropriate instance) was called.
An uninitialised record field was used.
A record selector was applied to a constructor without the appropriate field. This can only happen with a datatype with multiple constructors, where some fields are in one constructor but not another.
A record update was performed on a constructor without the appropriate field. This can only happen with a datatype with multiple constructors, where some fields are in one constructor but not another.
An expression that didn't typecheck during compile time was called. This is only possible with -fdefer-type-errors.
Retrieve the argument given to error. ErrorCall is isomorphic to a String.
>>> catching _ErrorCall (error "touch down!") return
"touch down!"
_ErrorCall :: Prism' ErrorCall     String
_ErrorCall :: Prism' SomeException String
Extract a description of the missing method.
_NoMethodError :: Prism' NoMethodError String
_NoMethodError :: Prism' SomeException String