Description
Pliable records.
Description
ruin
is a DSL for working with record types. It focuses on converting between conventionally-declared record types and supporting named function arguments.
Uses
-XOverloadedLabels
, so that#x
is a first-class label for the field namedx
.Provides
GHC.Generics
defaults.Named arguments:
\[rna|x y z] -> (x,y,z)
inhabits("x" :@ a,"y" :@ b,"z" :@ c) -> (a,b,c)
.Relies on
-XDuplicateRecordFields
; the generic defaults only work if record selector names do not have distinguishing prefices.Custom type errors, such as
ruin: Could not find the field `x' in the type ...
Data.Ruin.R
provides anonymous record types where the order of fields is irrelevant.
See the Data.Ruin
module for an overview.