Safe Haskell | None |
---|---|
Language | Haskell2010 |
- type Labels fs = Labels_ '[] -> Labels_ fs
- consLabels :: forall s ss. Labels_ ss -> Labels_ (s ': ss)
- mkLabels :: forall fs. Labels fs
- nilLabels :: Labels_ '[]
- type DeepFieldType ss t = DeepFieldType_ ss t
- type DeepHas = DeepHas_
- extricate :: forall ss t. DeepHas ss t => Labels ss -> t -> Eval (DeepFieldType ss t)
Sequences of labels
type Labels fs = Labels_ '[] -> Labels_ fs Source #
This type is an instance of a type-level difference list, so that
sequences of labels can be written as #x . #y . #z ::
, for example.Labels
'["x","y","z"]
consLabels :: forall s ss. Labels_ ss -> Labels_ (s ': ss) Source #
Deep projection
type DeepFieldType ss t = DeepFieldType_ ss t Source #
extricate :: forall ss t. DeepHas ss t => Labels ss -> t -> Eval (DeepFieldType ss t) Source #
extricate
project a field out of nested records by iterating
extricate1
.
The first argument is a function type so that the syntax can use
.
to specify a sequence of labels.
extricate
id = returnextricate
(#s . ss) =extricate1
#s Control.Monad.>=>
extricate
ss