Journal of Functional Programming



Recursive subtyping revealed 1


VLADIMIR GAPEYEV a1, MICHAEL Y. LEVIN a1 and BENJAMIN C. PIERCE a1
a1 Department of Computer & Information Science, University of Pennsylvania, 200 South 33rd Street, Philadelphia, PA 19104-6389, USA

Abstract

Algorithms for checking subtyping between recursive types lie at the core of many programming language implementations. But the fundamental theory of these algorithms and how they relate to simpler declarative specifications is not widely understood, due in part to the difficulty of the available introductions to the area. This tutorial paper offers an ‘end-to-end’ introduction to recursive types and subtyping algorithms, from basic theory to efficient implementation, set in the unifying mathematical framework of coinduction.



Footnotes

1 This article also appears as chapter 21 of Types and Programming Languages by Benjamin C. Pierce (MIT Press, 2002).