Tag-free garbage collection using explicit type parameters
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Unboxed values and polymorphic typing revisited
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
An Unboxed Operational Semantics for ML Polymorphism
Lisp and Symbolic Computation
Hi-index | 0.00 |
There is a middle ground between parametric and ad-hoc polymorphism in which a computation can depend upon a type parameter but is restricted to being defined at all types in an inductive fashion. We call such polymorphism non-parametric. We show how non-parametric polymorphism can be used to implement a variety of useful language mechanisms including overloading, unboxed data representations in the presence of ML-style polymorphism, and canonical representations of equivalent types. Moreover, we show that, by using a second-order, explicitly typed language extended with non-parametric operations, these mechanisms can be implemented without having to tag data with type information at runtime. Finally, we demonstrate that this approach retains a "phase distinction" permitting type checking and separate compilation. Our aim is to provide a unifying language, translation, and proof framework in which a variety of non-parametric mechanisms can be expressed and verified.