Selected publications at LSV

Abstract:
In modern OCaml, single-argument datatype declarations (variants with a single constructor, records with a single immutable field) can sometimes be ''unboxed''. This means that their memory representation is the same as their single argument, omitting an indirection through the variant or record constructor, thus achieving better memory efficiency. However, in the case of generalized/guarded algebraic datatypes (GADTs), unboxing is not always possible due to a subtle assumption about the runtime representation of OCaml values. The current correctness check is incomplete, rejecting many valid definitions, in particular those involving mutually-recursive datatype declarations. In this paper, we explain the notion of separability as a semantic for the unboxing criterion, and propose a set of inference rules to check separability. From these inference rules, we derive a new implementation of the unboxing check that properly supports mutually-recursive definitions.

@inproceedings{CLS-jfla19,
   address = {Lamoura, France},
   author = {Simon Colin and Rodolphe Lepigre and Gabriel Scherer},
   booktitle = {{A}ctes des 30{\`e}mes {J}ourn{\'e}es {F}rancophones sur les {L}angages {A}pplicatifs ({JFLA}'19)},
   editor = {Nicolas Magaud and Zaynah Dargaye},
   month = jan,
   note = {To appear},
   title = {{Unboxing Mutually Recursive Type Definitions}},
   year = {2019},
}

About LSV

Select by Year