large-records
large-records copied to clipboard
Library to support efficient compilation of large records (linear in the number of record fields)
Scalable records in Haskell
This repository contains all of the work on scalable records in Haskell:
- large-records provides scalable named records (records that are declared before they are used, just like standard Haskell records).
- large-anon provides scalable anonymous records.
-
large-generics is the generics library that supports both
large-records
andlarge-anon
. -
beam-large-records provides integration for
large-records
with beam. - typelet provides experimental support for type-level sharing.
-
large-records-benchmarks contains a large number
of benchmarks measuring the (compile time) performance of the
large-records
library.
For a detailed overview on compile time performance of large-records
, see
the benchmarks report.
The problems addressed by these libraries are discussed in a series of blog posts:
- Avoiding quadratic core code size with large records
- Induction without core-size blow-up a.k.a. Large records: anonymous edition
- Type-level sharing in Haskell, now
- New large-records release: now with 100% fewer quotes
-
large-anon
: Practical scalable anonymous records for Haskell
as well as in various presentations:
- Avoiding quadratic GHC core code size: Introducing the large-records library, Haskell Implementors’ Workshop 2021
- Avoid quadratic blow-up during compilation, Haskell Exchange 2021