Signature “subtyping”
(A quick preview of one of the Cardelli-Wegner ideas)
How can we have subtyping in a language that doesn’t even have inheritance?
The question is: under what conditions can we treat an instance of one type as an instance of another type?
Roughly: If all possible instances of type S can be treated as instances of type T, then we can view S as a subtype of T