Copyright | (C) 2020 Csongor Kiss |
---|---|
License | BSD3 |
Maintainer | Csongor Kiss <kiss.csongor.kiss@gmail.com> |
Stability | experimental |
Portability | non-portable |
Safe Haskell | None |
Language | Haskell2010 |
Data.GenericLens.Internal
Contents
Description
The library internals are exposed through this module. Please keep in mind that everything here is subject to change irrespective of the the version numbers.
Synopsis
- module Data.Generics.Internal.Families
- module Data.Generics.Internal.Families.Changing
- module Data.Generics.Internal.Families.Collect
- module Data.Generics.Internal.Families.Has
- module Data.Generics.Internal.Void
- module Data.Generics.Internal.Errors
- data family Param :: Nat -> j -> k
- class (Coercible (Rep a) (RepN a), Generic a) => GenericN a where
- newtype Rec p a (x :: k) = Rec {}
- type family RepN a :: Type -> Type
- type Iso s t a b = forall (p :: Type -> Type -> Type -> Type) i. Profunctor p => p i a b -> p i s t
- repIso :: (Generic a, Generic b) => Iso a b (Rep a x) (Rep b x)
- kIso :: forall r a p1 b p2 i. Profunctor p2 => p2 i a b -> p2 i (K1 r a p1) (K1 r b p1)
- sumIso :: forall a b x a' b' p i. Profunctor p => p i (Either (a x) (b x)) (Either (a' x) (b' x)) -> p i ((a :+: b) x) ((a' :+: b') x)
- mIso :: forall i1 (c :: Meta) f p1 g p2 i2. Profunctor p2 => p2 i2 (f p1) (g p1) -> p2 i2 (M1 i1 c f p1) (M1 i1 c g p1)
- type Iso' s a = Iso s s a a
- iso :: (s -> a) -> (b -> t) -> Iso s t a b
- recIso :: forall r a p1 b p2 i. Profunctor p2 => p2 i a b -> p2 i (Rec r a p1) (Rec r b p1)
- prodIso :: forall a b x a' b' p i. Profunctor p => p i (a x, b x) (a' x, b' x) -> p i ((a :*: b) x) ((a' :*: b') x)
- assoc3 :: forall a b c a' b' c' p i. Profunctor p => p i (a, (b, c)) (a', (b', c')) -> p i ((a, b), c) ((a', b'), c')
- fromIso :: Iso s t a b -> Iso b a t s
- withIso :: Iso s t a b -> ((s -> a) -> (b -> t) -> r) -> r
- pairing :: Iso s t a b -> Iso s' t' a' b' -> Iso (s, s') (t, t') (a, a') (b, b')
- first :: forall a (b :: Type -> Type) x a' p i. Strong p => p i (a x) (a' x) -> p i ((a :*: b) x) ((a' :*: b) x)
- swap :: (a, b) -> (b, a)
- second :: forall (a :: Type -> Type) b x b' p i. Strong p => p i (b x) (b' x) -> p i ((a :*: b) x) ((a :*: b') x)
- type Lens s t a b = forall (p :: Type -> Type -> Type -> Type) i. Strong p => p i a b -> p i s t
- choosing :: Lens s t a b -> Lens s' t' a b -> Lens (Either s s') (Either t t') a b
- view :: Lens s s a a -> s -> a
- set :: ((a -> b) -> s -> t) -> (s, b) -> t
- type LensLike (p :: Type -> Type -> Type) s t a b = p a b -> p s t
- ravel :: (ALens a b i a b -> ALens a b i s t) -> Lens s t a b
- data ALens a b i s t = ALens (s -> (c, a)) ((c, b) -> t)
- idLens :: ALens a b i a b
- lens :: (s -> (c, a)) -> ((c, b) -> t) -> Lens s t a b
- withLensPrim :: Lens s t a b -> (forall c. (s -> (c, a)) -> ((c, b) -> t) -> r) -> r
- fork :: (a -> b) -> (a -> c) -> a -> (b, c)
- data Coyoneda (f :: Type -> Type) b = Coyoneda (a -> b) (f a)
- inj :: Functor f => Coyoneda f a -> f a
- proj :: Functor f => f a -> Coyoneda f a
- (??) :: Functor f => f (a -> b) -> a -> f b
- assoc3L :: forall a b c a' b' c' p i. Strong p => p i (a, (b, c)) (a', (b', c')) -> p i ((a, b), c) ((a', b'), c')
- stron :: (Either s s', b) -> Either (s, b) (s', b)
- build :: (Tagged i b b -> Tagged i t t) -> b -> t
- left :: forall a (c :: Type -> Type) x b p i. Choice p => p i (a x) (b x) -> p i ((a :+: c) x) ((b :+: c) x)
- right :: forall (a :: Type -> Type) b x c p i. Choice p => p i (b x) (c x) -> p i ((a :+: b) x) ((a :+: c) x)
- match :: Prism s t a b -> s -> Either t a
- type APrism i s t a b = Market a b i a b -> Market a b i s t
- type Prism s t a b = forall (p :: Type -> Type -> Type -> Type) i. Choice p => p i a b -> p i s t
- type Prism' s a = forall (p :: Type -> Type -> Type -> Type) i. Choice p => p i a a -> p i s s
- prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
- gsum :: (a x -> c) -> (b x -> c) -> (a :+: b) x -> c
- _Left :: forall a c b p i. Choice p => p i a b -> p i (Either a c) (Either b c)
- _Right :: forall c a b p i. Choice p => p i a b -> p i (Either c a) (Either c b)
- prismPRavel :: APrism i s t a b -> Prism s t a b
- prism2prismp :: Market a b i s t -> Prism s t a b
- idPrism :: Market a b i a b
- withPrism :: APrism i s t a b -> ((b -> t) -> (s -> Either t a) -> r) -> r
- without' :: Prism s t a b -> Prism s t c d -> Prism s t (Either a c) (Either b d)
- module Data.Generics.Product.Internal.Subtype
Documentation
module Data.Generics.Internal.Void
data family Param :: Nat -> j -> k #
Instances
newtype Param n (a :: Type) # | |
Defined in Data.Generics.Internal.GenericN |
type family RepN a :: Type -> Type #
Instances
type RepN a # | |
Defined in Data.Generics.Internal.GenericN type RepN a |
Profunctor optics
type Iso s t a b = forall (p :: Type -> Type -> Type -> Type) i. Profunctor p => p i a b -> p i s t #
repIso :: (Generic a, Generic b) => Iso a b (Rep a x) (Rep b x) #
A type and its generic representation are isomorphic
kIso :: forall r a p1 b p2 i. Profunctor p2 => p2 i a b -> p2 i (K1 r a p1) (K1 r b p1) #
sumIso :: forall a b x a' b' p i. Profunctor p => p i (Either (a x) (b x)) (Either (a' x) (b' x)) -> p i ((a :+: b) x) ((a' :+: b') x) #
mIso :: forall i1 (c :: Meta) f p1 g p2 i2. Profunctor p2 => p2 i2 (f p1) (g p1) -> p2 i2 (M1 i1 c f p1) (M1 i1 c g p1) #
M1
is just a wrapper around `f p`
mIso :: Iso' (M1 i c f p) (f p)
recIso :: forall r a p1 b p2 i. Profunctor p2 => p2 i a b -> p2 i (Rec r a p1) (Rec r b p1) #
prodIso :: forall a b x a' b' p i. Profunctor p => p i (a x, b x) (a' x, b' x) -> p i ((a :*: b) x) ((a' :*: b') x) #
assoc3 :: forall a b c a' b' c' p i. Profunctor p => p i (a, (b, c)) (a', (b', c')) -> p i ((a, b), c) ((a', b'), c') #
first :: forall a (b :: Type -> Type) x a' p i. Strong p => p i (a x) (a' x) -> p i ((a :*: b) x) ((a' :*: b) x) #
Lens focusing on the first element of a product
second :: forall (a :: Type -> Type) b x b' p i. Strong p => p i (b x) (b' x) -> p i ((a :*: b) x) ((a :*: b') x) #
Lens focusing on the second element of a product
Constructors
ALens (s -> (c, a)) ((c, b) -> t) |
Instances
Profunctor (ALens a b) # | |
Defined in Data.Generics.Internal.Profunctor.Lens Methods dimap :: (a0 -> b0) -> (c -> d) -> ALens a b i b0 c -> ALens a b i a0 d # lmap :: (a0 -> b0) -> ALens a b i b0 c -> ALens a b i a0 c # rmap :: (c -> d) -> ALens a b i b0 c -> ALens a b i b0 d # lcoerce' :: Coercible a0 b0 => ALens a b i a0 c -> ALens a b i b0 c # rcoerce' :: Coercible a0 b0 => ALens a b i c a0 -> ALens a b i c b0 # conjoined__ :: (ALens a b i a0 b0 -> ALens a b i s t) -> (ALens a b i a0 b0 -> ALens a b j s t) -> ALens a b i a0 b0 -> ALens a b j s t # ixcontramap :: (j -> i) -> ALens a b i a0 b0 -> ALens a b j a0 b0 # | |
Strong (ALens a b) # | |
Defined in Data.Generics.Internal.Profunctor.Lens Methods first' :: ALens a b i a0 b0 -> ALens a b i (a0, c) (b0, c) # second' :: ALens a b i a0 b0 -> ALens a b i (c, a0) (c, b0) # linear :: (forall (f :: Type -> Type). Functor f => (a0 -> f b0) -> s -> f t) -> ALens a b i a0 b0 -> ALens a b i s t # ilinear :: (forall (f :: Type -> Type). Functor f => (i -> a0 -> f b0) -> s -> f t) -> ALens a b j a0 b0 -> ALens a b (i -> j) s t # | |
Functor (ALens a b i s) # | |
withLensPrim :: Lens s t a b -> (forall c. (s -> (c, a)) -> ((c, b) -> t) -> r) -> r #
assoc3L :: forall a b c a' b' c' p i. Strong p => p i (a, (b, c)) (a', (b', c')) -> p i ((a, b), c) ((a', b'), c') #
left :: forall a (c :: Type -> Type) x b p i. Choice p => p i (a x) (b x) -> p i ((a :+: c) x) ((b :+: c) x) #
right :: forall (a :: Type -> Type) b x c p i. Choice p => p i (b x) (c x) -> p i ((a :+: b) x) ((a :+: c) x) #
prismPRavel :: APrism i s t a b -> Prism s t a b #
prism2prismp :: Market a b i s t -> Prism s t a b #