Type-oriented programming is a paradigm spanning both object-oriented and functional approaches to writing statically typed code. Most programming languages in this category make extensive use of subtyping and parametric polymorphism.
This material introduces the basic concepts, most of them known from object-oriented and functional languages, and then goes on to explain some more involved techniques used in languages with powerful type systems.
The structure of the book is as follows:
Types of higher kinds