Saved in:
Bibliographic Details
Main Authors: Theocharis, Constantine, Brady, Edwin
Format: Preprint
Published: 2025
Subjects:
Online Access:https://arxiv.org/abs/2505.21225
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866913863307362304
author Theocharis, Constantine
Brady, Edwin
author_facet Theocharis, Constantine
Brady, Edwin
contents Inductive families provide a convenient way of programming with dependent types. Yet, when it comes to compilation, their default linked-tree runtime representations, as well as the need to convert between different indexed views of the same data, can lead to unsatisfactory runtime performance. In this paper, we introduce a language with dependent types, and inductive families with customisable representations. Representations are a version of Wadler's views, refined to inductive families like in Epigram, but with compilation guarantees: a represented inductive family will not leave any runtime traces behind, without relying on heuristics such as deforestation. This way, we can build a library of convenient inductive families based on a minimal set of primitives, whose re-indexing and conversion functions are erased during compilation. We show how we can express optimisation techniques such as representing Nat-like types as GMP-style big integers, without special casing in the compiler. With dependent types, reasoning about data representations is also possible through a provided modality. This yields computationally irrelevant isomorphisms between the original and represented data.
format Preprint
id arxiv_https___arxiv_org_abs_2505_21225
institution arXiv
publishDate 2025
record_format arxiv
spellingShingle Custom Representations of Inductive Families
Theocharis, Constantine
Brady, Edwin
Programming Languages
Inductive families provide a convenient way of programming with dependent types. Yet, when it comes to compilation, their default linked-tree runtime representations, as well as the need to convert between different indexed views of the same data, can lead to unsatisfactory runtime performance. In this paper, we introduce a language with dependent types, and inductive families with customisable representations. Representations are a version of Wadler's views, refined to inductive families like in Epigram, but with compilation guarantees: a represented inductive family will not leave any runtime traces behind, without relying on heuristics such as deforestation. This way, we can build a library of convenient inductive families based on a minimal set of primitives, whose re-indexing and conversion functions are erased during compilation. We show how we can express optimisation techniques such as representing Nat-like types as GMP-style big integers, without special casing in the compiler. With dependent types, reasoning about data representations is also possible through a provided modality. This yields computationally irrelevant isomorphisms between the original and represented data.
title Custom Representations of Inductive Families
topic Programming Languages
url https://arxiv.org/abs/2505.21225