Safe Haskell | None |
---|---|
Language | Haskell2010 |
- class (i ~ RIndex r rs) => RElem r rs i where
- class (is ~ RImage sub super) => RSubset sub super is where
- type REquivalent rs ss is js = (RSubset rs ss is, RSubset ss rs js)
- type RElem' r rs = RElem r rs (RIndex r rs)
- type (∈) r rs = RElem' r rs
- type RSubset' rs ss = RSubset rs ss (RImage rs ss)
- type (⊆) rs ss = RSubset' rs ss
- type REquivalent' rs ss = REquivalent rs ss (RImage rs ss) (RImage ss rs)
- type (≅) rs ss = REquivalent' rs ss
- type (<:) rs ss = rs ⊆ ss
- type (:~:) rs ss = rs ≅ ss
Documentation
class (i ~ RIndex r rs) => RElem r rs i where Source
This is a drop-in replacement for the RElem
class from Data.Vinyl.Lens
.
The functions it provides work on CoRec
s instead of Rec
s.
It also provides a lifting function clift
, which has no
equivalent operation on Rec
s.
If CoRec
were merged into vinyl
, this typeclass could be
eliminated, and its methods could be added to RElem
.
cprism :: (Choice p, Applicative g) => proxy r -> p (f r) (g (f r)) -> p (CoRec f rs) (g (CoRec f rs)) Source
We can get a prism for getting and setting values in a CoRec
. Morally,
cprism :: Prism' (CoRec f rs) (f r)
cget :: proxy r -> CoRec f rs -> Maybe (f r) Source
Get a value from a CoRec
. Note that, unlike rget
,
this function may not find the requested element, so
the result is wrapped in Maybe
.
cmodify :: (f r -> f r) -> CoRec f rs -> CoRec f rs Source
cput :: f r -> CoRec f rs -> CoRec f rs Source
If the element in the CoRec
is of a certain type,
replace it. This function is provided for symmetry
with rput
, but it is not typically useful.
Usually, clift
is more useful.
clift :: f r -> CoRec f rs Source
Lift an element into a CoRec
.
type REquivalent rs ss is js = (RSubset rs ss is, RSubset ss rs js) Source
Two record types are equivalent when they are subtypes of each other.
type RSubset' rs ss = RSubset rs ss (RImage rs ss) Source
A shorthand for RSubset
which supplies its image.
type REquivalent' rs ss = REquivalent rs ss (RImage rs ss) (RImage ss rs) Source
A shorthand for REquivalent
which supplies its images.
type (≅) rs ss = REquivalent' rs ss Source
An infix operator for 'REquivalent\''