PRL Seminars![]() Simple, Efficient Object Encoding using Intersection TypesKarl Crary
I present a type-theoretic encoding of objects that interprets method dispatch by self-application (i.e., method functions are applied to the objects containing them) but still validates the expected subtyping relationships. The naive typing of self-application fails to validate the expected subtyping relationships because it is too permissive, and allows application to similarly typed objects that are not self. My encoding solves this problem by contraining methods to be applied only to self, using existential and intersection types. Using this typing, I give a full account of objects including self types and
method update. I also present another application of this object encoding
to
fully abstract, closure-passing closure conversion. The typing constructs
used
in this encoding appear to be quite rich, but they may be axiomized in a
novel,
restricted fashion that is metatheoretically simple.
|