Copyright | (c) Fumiaki Kinoshita 2018 |
---|---|
License | BSD3 |
Maintainer | Fumiaki Kinoshita <fumiexcel@gmail.com> |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
Re-implementation of lens combinators
Synopsis
- type Optic p f s t a b = p a (f b) -> p s (f t)
- type Optic' p f s a = p a (f a) -> p s (f s)
- view :: Optic' (->) (Const a) s a -> s -> a
- views :: Optic' (->) (Const r) s a -> (a -> r) -> s -> r
- over :: Optic (->) Identity s t a b -> (a -> b) -> s -> t
- withIso :: Optic (Exchange a b) Identity s t a b -> ((s -> a) -> (b -> t) -> r) -> r
- data Exchange a b s t = Exchange (s -> a) (b -> t)
- review :: Optic' Tagged Identity s a -> a -> s
Documentation
views :: Optic' (->) (Const r) s a -> (a -> r) -> s -> r Source #
views
:: Getter s a -> (a -> r) -> (s -> r)
over :: Optic (->) Identity s t a b -> (a -> b) -> s -> t Source #
over
:: Setter s t a b -> (a -> b) -> (s -> t)
withIso :: Optic (Exchange a b) Identity s t a b -> ((s -> a) -> (b -> t) -> r) -> r Source #
Recover tho functions from an Iso/
data Exchange a b s t Source #
Reifies the structure of Iso
s
Exchange (s -> a) (b -> t) |
Instances
Profunctor (Exchange a b) Source # | |
Defined in Data.Extensible.Internal.Rig dimap :: (a0 -> b0) -> (c -> d) -> Exchange a b b0 c -> Exchange a b a0 d lmap :: (a0 -> b0) -> Exchange a b b0 c -> Exchange a b a0 c rmap :: (b0 -> c) -> Exchange a b a0 b0 -> Exchange a b a0 c (#.) :: Coercible c b0 => q b0 c -> Exchange a b a0 b0 -> Exchange a b a0 c (.#) :: Coercible b0 a0 => Exchange a b b0 c -> q a0 b0 -> Exchange a b a0 c |