@hackage labels0.3.3
Anonymous records via named tuples
Categories
License
BSD-3-Clause
Maintainer
chrisdone@gmail.com
Links
Versions
Installation
Dependencies (2)
- base >=4.9.0.0 && <5
- template-haskell Show all…
Dependents (4)
@hackage/acme-everything, @hackage/superrecord, @hackage/text-format-heavy, @hackage/reproject
labels
Declare and access tuple fields with labels
This package is experimental, exploring the design space opened up by the implemented and to-be-implemented work on extensible records in GHC.
Note: You need GHC 8.0.1.
Basic examples
Enable these extensions:
-
In GHCi:
:set -XOverloadedLabels -XTypeOperators -XDataKinds -XFlexibleContexts -
In a module:
{-# LANGUAGE OverloadedLabels, TypeOperators, DataKinds, FlexibleContexts #-}
Let's use GHCi:
> import Labels
> :set -XOverloadedLabels -XTypeOperators -XDataKinds -XFlexibleContexts
| Construct a record | > (#foo := "hi", #bar := 123)
(#foo := "hi",#bar := 123)
|
| Get fields of a record | > get #bar (#foo := "hi", #bar := 123)
123
|
| Set fields of a record | > set #bar 66 (#foo := "hi", #bar := 123)
(#foo := "hi",#bar := 66)
|
| Modify fields of a record | > modify #mu (*0.1) (#bar := "hi", #mu := 123)
(#bar := "hi",#mu := 12.3)
|
| Add fields to a record | > cons (#mu := [1,2,3]) (#foo := "hi", #bar := 123)
(#mu := [1,2,3],#foo := "hi",#bar := 123)
|
| Abstraction | > let double field record = set field (get field record * 2) record
> double #mu (#bar := "hi", #mu := 123)
(#bar := "hi",#mu := 246)
|