| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Data.Ruin.Deep
- 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.
extricateid = returnextricate(#s . ss) =extricate1#s Control.Monad.>=>extricatess