Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- pattern (:!:) :: forall s f rs a. Contravariant f => f a -> Rec f rs -> Rec f ((s :-> a) ': rs)
- rlens'' :: (Contravariant f, Functor g, RElem (s :-> a) rs) => proxy (s :-> a) -> (f a -> g (f a)) -> Rec f rs -> g (Rec f rs)
- rlensS :: forall p p' s s' a b g rs rs'. (p ~ (s :-> a), p' ~ (s' :-> b), RecElem Rec (s :-> a) (s' :-> b) rs rs' (RIndex (s :-> a) rs), Functor g) => (a -> g b) -> Record rs -> g (Record rs')
- rlensS' :: forall p p' s s' a b f g rs rs'. (p ~ (s :-> a), p' ~ (s' :-> b), RecElem Rec (s :-> a) (s' :-> b) rs rs' (RIndex (s :-> a) rs), Functor f, Functor g) => (f a -> g (f b)) -> Rec f rs -> g (Rec f rs')
- rlensS'' :: forall p p' s s' a b f g rs rs'. (p ~ (s :-> a), p' ~ (s' :-> b), RecElem Rec (s :-> a) (s' :-> b) rs rs' (RIndex (s :-> a) rs), Contravariant f, Functor g) => (f a -> g (f b)) -> Rec f rs -> g (Rec f rs')
Documentation
pattern (:!:) :: forall s f rs a. Contravariant f => f a -> Rec f rs -> Rec f ((s :-> a) ': rs) infixr 5 Source #
Bidirectional pattern matching the first field of a record using :->
values and any contavariant functor.
This pattern is bidirectional meaning you can use it either as a pattern or a constructor, e.g.
let rec = Predicate even :!: Predicate (even . length) :!: RNil Predicate foo :!: Predicate bar :!: RNil = rec
Since: 0.0.1.0
rlens'' :: (Contravariant f, Functor g, RElem (s :-> a) rs) => proxy (s :-> a) -> (f a -> g (f a)) -> Rec f rs -> g (Rec f rs) Source #
Lens to a particular field of a record using a contravariant functor.
For example, given:
type FFoo = "foo" :-> Int type FBar = "bar" :-> String fBar_ :: Proxy FBar fBar_ = Proxy rec ::Rec
Predicate
'[FFoo, FBar] rec = Predicate even :!: Predicate (even . length) :!: Nil
Then:
view (rlens'' fBar_) rec == Predicate even set (rlens'' fBar_) Predicate (odd . length) rec == Predicate even :!: Predicate (odd . length) :!: Nil over (rlens'' fBar_) (contramap show) rec == Predicate even :!: Predicate (odd . length . show) :!: Nil
Since: 0.0.1.0
rlensS :: forall p p' s s' a b g rs rs'. (p ~ (s :-> a), p' ~ (s' :-> b), RecElem Rec (s :-> a) (s' :-> b) rs rs' (RIndex (s :-> a) rs), Functor g) => (a -> g b) -> Record rs -> g (Record rs') Source #
Type changing lens over a Record
field.
Since: 0.0.1.0