@hackage ruin0.1.0.1

Pliable records

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 named x.

  • 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.