Unboxing mutually recursive type definitions in ocaml

Research output: Contribution to conferencePaperpeer-review

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 languageEnglish
Pages173-192
Number of pages20
Publication statusPublished - 1 Jan 2019
Event30emes Journees Francophones des Langages Applicatifs, JFLA 2019 - 30th French-Speaking Conference on Applicative Languages, JFLA 2019 - Les Rousses, France
Duration: 30 Jan 20192 Feb 2019

Conference

Conference30emes Journees Francophones des Langages Applicatifs, JFLA 2019 - 30th French-Speaking Conference on Applicative Languages, JFLA 2019
Country/TerritoryFrance
CityLes Rousses
Period30/01/192/02/19

Fingerprint

Dive into the research topics of 'Unboxing mutually recursive type definitions in ocaml'. Together they form a unique fingerprint.

Cite this