The more I use tagged unions for error handling, the more I hate exceptions and error codes. Why did we suffer with C's error handling for 50 years?