@hackage generic-labels0.1.0.1
Generically extract and replace collections of record fields
Categories
License
BSD-3-Clause
Maintainer
Sam Derbyshire
Links
Versions
- 0.1.0.1 Tue, 9 Feb 2021
Installation
Dependencies (2)
- base >=4.14 && <4.17
- generic-lens-core >=2.0 && <2.2 Show all…
Dependents (0)
Handle various conversion operations between record types, such as projecting out a collection of fields from a record, or plugging in values for a subset of the fields of a larger record.
Works both with built-in Haskell records, as well as explicitly labelled types
( #label := value ) :: ( "label" := Type ) .
Project out a smaller record using project:
data IBXD x = IBXD { i :: Int, b :: Bool, x :: x, d :: Double }
deriving stock Generic
data XI x = XI { x :: x, i :: Int }
deriving stock Generic
ibxd_to_xi :: IBXD x -> XI x ibxd_to_xi = project
Plug in a subset of fields using inject:
xi_into_ibxd :: XI x -> IBXD x -> IBXD x xi_into_ibxd = inject
Create a record out of two collections of arguments using adapt:
xi_plus_bd_makes_ibxd :: XI x -> ( "b" := Bool, "d" := Double ) -> IBXD x xi_plus_bd_makes_ibxd = adapt
See also the library's readme.