Almost any app working with real-world data, or any program more complex than a toy model, will use derived types (classes) to handle abstract data. Operators for arithmetic (+, -, *, /, **) and comparison (==, /=, >=, <=, >, <) are available out of the box for built-in numeric types (integer, real, complex), but not for derived types. For example, to keep track of the calendar date and time in an app, you’d need to compare, add, and subtract datetime instances (data structures that represent date and time). This is where derived types from chapter 8 and generic procedures and custom operators from chapter 9 come together to form a powerful feature of the language: user-defined operators for derived types. Combining these two capabilities will allow you to define what the built-in (and custom) operators mean for any derived type, and in a way extend the syntax of the language.