Syntactic Type Abstraction Syntactic Type Abstraction Abstract Software developers often structure programs in such a way that different pieces of code constitute distinct principals . Types help define the protocol by which these principals interact. In particular, abstract types allow a principal to make strong assumptions about how well-typed clients use the facilities that it provides. We show how the notions of principals and type abstraction can be formalized within a language.
Different principals can know the implementation of different abstract types.
We present various typed lambda calculi with principals, including versions that have mutable state and recursive types.