generic-labels-0.1.0.1: generic-labels.cabal
cabal-version: 3.0
name: generic-labels
version: 0.1.0.1
author: Sam Derbyshire
maintainer: Sam Derbyshire
build-type: Simple
license: BSD-3-Clause
homepage: https://github.com/sheaf/generic-labels
bug-reports: https://github.com/sheaf/generic-labels/issues
category: Data, Generics, Records
extra-source-files:
changelog.md
synopsis: Generically extract and replace collections of record fields
description:
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 :: c, i :: Int }
deriving stock Generic
@
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](https://github.com/sheaf/generic-labels/blob/master/readme.md).
source-repository head
type: git
location: git://github.com/sheaf/generic-labels
common common
build-depends:
base
>= 4.14 && < 4.17
default-language:
Haskell2010
ghc-options:
-Wall
-Wcompat
-Wno-unticked-promoted-constructors
default-extensions:
DataKinds
DerivingStrategies
FlexibleContexts
FlexibleInstances
FunctionalDependencies
NoStarIsType
PatternSynonyms
PolyKinds
ScopedTypeVariables
--StandaloneKindSignatures -- currently unsupported by hackage
TypeApplications
TypeFamilyDependencies
TypeOperators
common generic-lens-core
build-depends:
generic-lens-core
>= 2.0 && < 2.2
library
import:
common, generic-lens-core
hs-source-dirs:
src
exposed-modules:
Data.Generic.Labels
Data.Generic.Labels.Internal
Data.Generic.Labels.Internal.Errors
Data.Label
other-modules:
Data.Type.Error
Data.Type.List
Data.Type.Maybe
Data.Type.Multiplicity
test-suite generic-labels-test
import:
common
type:
detailed-0.9
build-depends:
, generic-labels
, Cabal
>= 3.0 && < 3.5
, inspection-testing
>= 0.4 && < 0.5
hs-source-dirs:
test
test-module:
Inspection
other-modules:
ShouldCompile.Adapt.RRR
ShouldCompile.Adapt.TTR
ShouldCompile.Adapt.TTT
ShouldCompile.Adapt.SingletonArg
ShouldCompile.Adapt.SingletonArgOpt
ShouldCompile.Adapt.SingletonOpt
ShouldCompile.Inject.Basic
ShouldCompile.Project.Basic
ShouldCompile.Project.PolymorphicR
ShouldCompile.Project.PolymorphicT