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.
| Original language | English |
|---|---|
| Pages | 173-192 |
| Number of pages | 20 |
| Publication status | Published - 1 Jan 2019 |
| Event | 30emes Journees Francophones des Langages Applicatifs, JFLA 2019 - 30th French-Speaking Conference on Applicative Languages, JFLA 2019 - Les Rousses, France Duration: 30 Jan 2019 → 2 Feb 2019 |
Conference
| Conference | 30emes Journees Francophones des Langages Applicatifs, JFLA 2019 - 30th French-Speaking Conference on Applicative Languages, JFLA 2019 |
|---|---|
| Country/Territory | France |
| City | Les Rousses |
| Period | 30/01/19 → 2/02/19 |