Text this: The structure of typed programming languages