Notes on proper abstractions and ADTs
Special concern for precise definitions, clarity and brevity (omitting of what is clear from the context), high level of abstraction, and proper generality (just like Sets or Numbers). Both algebraic types (“products” and “sums”), could be used “like tables”, with new columns being added without affecting any code that is already out there. This implies a by name instead of position-based (offset) access. This, in turn, is the fundamental, definitive property of structs over tuples....