Higher-order type-level programming in Haskell

Type family applications in Haskell must be fully saturated. This means that all type-level functions have to be first-order, leading to code that is both messy and longwinded. In this paper we detail an extension to GHC that removes this restriction. We augment Haskell’s existing type arrow, |->...

Full description

Saved in:
Bibliographic Details
Published in:Proceedings of ACM on programming languages Vol. 3; no. ICFP; pp. 1 - 26
Main Authors: Kiss, Csongor, Field, Tony, Eisenbach, Susan, Peyton Jones, Simon
Format: Journal Article
Language:English
Published: 01.08.2019
ISSN:2475-1421, 2475-1421
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:Type family applications in Haskell must be fully saturated. This means that all type-level functions have to be first-order, leading to code that is both messy and longwinded. In this paper we detail an extension to GHC that removes this restriction. We augment Haskell’s existing type arrow, |->|, with an unmatchable arrow, | >|, that supports partial application of type families without compromising soundness. A soundness proof is provided. We show how the techniques described can lead to substantial code-size reduction (circa 80%) in the type-level logic of commonly-used type-level libraries whilst simultaneously improving code quality and readability.
ISSN:2475-1421
2475-1421
DOI:10.1145/3341706