Pliable records

Latest on Hackage:

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Nicolas Frisby

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.

comments powered byDisqus