Description
Anonymous records via named tuples.
Description
Declare and access tuple fields with labels. An approach to anonymous records.
README.md
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)
|