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