Have bang and Bang defined in our language (concrete and abstract).
Our error should contain more useful information than just the fact that some error occurred.
- Location of error (Line number, AST Location, etc.)
- Type of error
- Error message
Operations which evaluate to a Bang on one of its branches should return a Bang.
Bang is its own type, so you may have to write inference rules for Bang. Often it is easier/better to just not define the error cases.