Efficient data representation in polymorphic languages
Résumé
Languages with polymorphic types (e.g. ML) have traditionnaly been implemented using Lisp-like data representations - everything has to fit in one word, if necessary by being heap-allocated and handled through a pointer. The reason is that in contrast with conventional statically-typed languages such as Pascal, it is not possible to assign one unique type to each expression at compile-time, an absolute requirement for using more efficient representations (e.g. unallocated multi-word values). In this paper, we show how to take advantage of the static polymorphic typing to mix correctly two styles of data representation in the implementation of a polymorphic language : specialized efficient representations are used when types are fully known at compile-time ; uniform Lisp-like representations are used otherwise.