lens-4.12.3: Lenses, Folds and Traversals

Control.Lens.Internal.Bazaar

Description

Synopsis

# Documentation

class Profunctor p => Bizarre p w | w -> p where Source

This class is used to run the various `Bazaar` variants used in this library.

Methods

bazaar :: Applicative f => p a (f b) -> w a b t -> f t Source

Instances

 Profunctor p => Bizarre p (Bazaar p) Source Methodsbazaar :: Applicative f => p a (f b) -> Bazaar p a b t -> f t Source Profunctor p => Bizarre p (BazaarT p g) Source Methodsbazaar :: Applicative f => p a (f b) -> BazaarT p g a b t -> f t Source Corepresentable p => Bizarre p (TakingWhile p g) Source Methodsbazaar :: Applicative f => p a (f b) -> TakingWhile p g a b t -> f t Source Source Methodsbazaar :: Applicative f => Indexed Int a (f b) -> Mafic a b t -> f t Source Bizarre (Indexed i) (Molten i) Source Methodsbazaar :: Applicative f => Indexed i a (f b) -> Molten i a b t -> f t Source

newtype Bazaar p a b t Source

This is used to characterize a `Traversal`.

a.k.a. indexed Cartesian store comonad, indexed Kleene store comonad, or an indexed `FunList`.

A `Bazaar` is like a `Traversal` that has already been applied to some structure.

Where a `Context a b t` holds an `a` and a function from `b` to `t`, a `Bazaar a b t` holds `N` `a`s and a function from `N` `b`s to `t`, (where `N` might be infinite).

Mnemonically, a `Bazaar` holds many stores and you can easily add more.

This is a final encoding of `Bazaar`.

Constructors

 Bazaar FieldsrunBazaar :: forall f. Applicative f => p a (f b) -> f t

Instances

 Corepresentable p => Sellable p (Bazaar p) Source Methodssell :: p a (Bazaar p a b b) Source Profunctor p => Bizarre p (Bazaar p) Source Methodsbazaar :: Applicative f => p a (f b) -> Bazaar p a b t -> f t Source Source Methodsiextract :: Bazaar p a a t -> t Sourceiduplicate :: Bazaar p a c t -> Bazaar p a b (Bazaar p b c t) Sourceiextend :: (Bazaar p b c t -> r) -> Bazaar p a c t -> Bazaar p a b r Source Source Methodsifmap :: (s -> t) -> Bazaar p a b s -> Bazaar p a b t Source Functor (Bazaar p a b) Source Methodsfmap :: (c -> d) -> Bazaar p a b c -> Bazaar p a b d(<\$) :: c -> Bazaar p a b d -> Bazaar p a b c Applicative (Bazaar p a b) Source Methodspure :: c -> Bazaar p a b c(<*>) :: Bazaar p a b (c -> d) -> Bazaar p a b c -> Bazaar p a b d(*>) :: Bazaar p a b c -> Bazaar p a b d -> Bazaar p a b d(<*) :: Bazaar p a b c -> Bazaar p a b d -> Bazaar p a b c ((~) * a b, Conjoined p) => Comonad (Bazaar p a b) Source Methodsextract :: Bazaar p a b c -> cduplicate :: Bazaar p a b c -> Bazaar p a b (Bazaar p a b c)extend :: (Bazaar p a b c -> d) -> Bazaar p a b c -> Bazaar p a b d ((~) * a b, Conjoined p) => ComonadApply (Bazaar p a b) Source Methods(<@>) :: Bazaar p a b (c -> d) -> Bazaar p a b c -> Bazaar p a b d(@>) :: Bazaar p a b c -> Bazaar p a b d -> Bazaar p a b d(<@) :: Bazaar p a b c -> Bazaar p a b d -> Bazaar p a b c Apply (Bazaar p a b) Source Methods(<.>) :: Bazaar p a b (c -> d) -> Bazaar p a b c -> Bazaar p a b d(.>) :: Bazaar p a b c -> Bazaar p a b d -> Bazaar p a b d(<.) :: Bazaar p a b c -> Bazaar p a b d -> Bazaar p a b c

type Bazaar' p a = Bazaar p a a Source

This alias is helpful when it comes to reducing repetition in type signatures.

```type `Bazaar'` p a t = `Bazaar` p a a t
```

newtype BazaarT p g a b t Source

`BazaarT` is like `Bazaar`, except that it provides a questionable `Contravariant` instance To protect this instance it relies on the soundness of another `Contravariant` type, and usage conventions.

For example. This lets us write a suitably polymorphic and lazy `taking`, but there must be a better way!

Constructors

 BazaarT FieldsrunBazaarT :: forall f. Applicative f => p a (f b) -> f t

Instances

 Corepresentable p => Sellable p (BazaarT p g) Source Methodssell :: p a (BazaarT p g a b b) Source Profunctor p => Bizarre p (BazaarT p g) Source Methodsbazaar :: Applicative f => p a (f b) -> BazaarT p g a b t -> f t Source Conjoined p => IndexedComonad (BazaarT p g) Source Methodsiextract :: BazaarT p g a a t -> t Sourceiduplicate :: BazaarT p g a c t -> BazaarT p g a b (BazaarT p g b c t) Sourceiextend :: (BazaarT p g b c t -> r) -> BazaarT p g a c t -> BazaarT p g a b r Source Source Methodsifmap :: (s -> t) -> BazaarT p g a b s -> BazaarT p g a b t Source Functor (BazaarT p g a b) Source Methodsfmap :: (c -> d) -> BazaarT p g a b c -> BazaarT p g a b d(<\$) :: c -> BazaarT p g a b d -> BazaarT p g a b c Applicative (BazaarT p g a b) Source Methodspure :: c -> BazaarT p g a b c(<*>) :: BazaarT p g a b (c -> d) -> BazaarT p g a b c -> BazaarT p g a b d(*>) :: BazaarT p g a b c -> BazaarT p g a b d -> BazaarT p g a b d(<*) :: BazaarT p g a b c -> BazaarT p g a b d -> BazaarT p g a b c (Profunctor p, Contravariant g) => Contravariant (BazaarT p g a b) Source Methodscontramap :: (c -> d) -> BazaarT p g a b d -> BazaarT p g a b c(>\$) :: c -> BazaarT p g a b c -> BazaarT p g a b d ((~) * a b, Conjoined p) => Comonad (BazaarT p g a b) Source Methodsextract :: BazaarT p g a b c -> cduplicate :: BazaarT p g a b c -> BazaarT p g a b (BazaarT p g a b c)extend :: (BazaarT p g a b c -> d) -> BazaarT p g a b c -> BazaarT p g a b d ((~) * a b, Conjoined p) => ComonadApply (BazaarT p g a b) Source Methods(<@>) :: BazaarT p g a b (c -> d) -> BazaarT p g a b c -> BazaarT p g a b d(@>) :: BazaarT p g a b c -> BazaarT p g a b d -> BazaarT p g a b d(<@) :: BazaarT p g a b c -> BazaarT p g a b d -> BazaarT p g a b c Apply (BazaarT p g a b) Source Methods(<.>) :: BazaarT p g a b (c -> d) -> BazaarT p g a b c -> BazaarT p g a b d(.>) :: BazaarT p g a b c -> BazaarT p g a b d -> BazaarT p g a b d(<.) :: BazaarT p g a b c -> BazaarT p g a b d -> BazaarT p g a b c Contravariant g => Monoid (BazaarT p g a b t) Source Methodsmempty :: BazaarT p g a b tmappend :: BazaarT p g a b t -> BazaarT p g a b t -> BazaarT p g a b tmconcat :: [BazaarT p g a b t] -> BazaarT p g a b t Contravariant g => Semigroup (BazaarT p g a b t) Source Methods(<>) :: BazaarT p g a b t -> BazaarT p g a b t -> BazaarT p g a b tsconcat :: NonEmpty (BazaarT p g a b t) -> BazaarT p g a b ttimes1p :: Natural -> BazaarT p g a b t -> BazaarT p g a b t

type BazaarT' p g a = BazaarT p g a a Source

This alias is helpful when it comes to reducing repetition in type signatures.

```type `BazaarT'` p g a t = `BazaarT` p g a a t
```

class Profunctor p => Bizarre1 p w | w -> p where Source

Methods

bazaar1 :: Apply f => p a (f b) -> w a b t -> f t Source

Instances

 Profunctor p => Bizarre1 p (Bazaar1 p) Source Methodsbazaar1 :: Apply f => p a (f b) -> Bazaar1 p a b t -> f t Source Profunctor p => Bizarre1 p (BazaarT1 p g) Source Methodsbazaar1 :: Apply f => p a (f b) -> BazaarT1 p g a b t -> f t Source

newtype Bazaar1 p a b t Source

This is used to characterize a `Traversal`.

a.k.a. indexed Cartesian store comonad, indexed Kleene store comonad, or an indexed `FunList`.

A `Bazaar1` is like a `Traversal` that has already been applied to some structure.

Where a `Context a b t` holds an `a` and a function from `b` to `t`, a `Bazaar1 a b t` holds `N` `a`s and a function from `N` `b`s to `t`, (where `N` might be infinite).

Mnemonically, a `Bazaar1` holds many stores and you can easily add more.

This is a final encoding of `Bazaar1`.

Constructors

 Bazaar1 FieldsrunBazaar1 :: forall f. Apply f => p a (f b) -> f t

Instances

 Corepresentable p => Sellable p (Bazaar1 p) Source Methodssell :: p a (Bazaar1 p a b b) Source Profunctor p => Bizarre1 p (Bazaar1 p) Source Methodsbazaar1 :: Apply f => p a (f b) -> Bazaar1 p a b t -> f t Source Source Methodsiextract :: Bazaar1 p a a t -> t Sourceiduplicate :: Bazaar1 p a c t -> Bazaar1 p a b (Bazaar1 p b c t) Sourceiextend :: (Bazaar1 p b c t -> r) -> Bazaar1 p a c t -> Bazaar1 p a b r Source Source Methodsifmap :: (s -> t) -> Bazaar1 p a b s -> Bazaar1 p a b t Source Functor (Bazaar1 p a b) Source Methodsfmap :: (c -> d) -> Bazaar1 p a b c -> Bazaar1 p a b d(<\$) :: c -> Bazaar1 p a b d -> Bazaar1 p a b c ((~) * a b, Conjoined p) => Comonad (Bazaar1 p a b) Source Methodsextract :: Bazaar1 p a b c -> cduplicate :: Bazaar1 p a b c -> Bazaar1 p a b (Bazaar1 p a b c)extend :: (Bazaar1 p a b c -> d) -> Bazaar1 p a b c -> Bazaar1 p a b d ((~) * a b, Conjoined p) => ComonadApply (Bazaar1 p a b) Source Methods(<@>) :: Bazaar1 p a b (c -> d) -> Bazaar1 p a b c -> Bazaar1 p a b d(@>) :: Bazaar1 p a b c -> Bazaar1 p a b d -> Bazaar1 p a b d(<@) :: Bazaar1 p a b c -> Bazaar1 p a b d -> Bazaar1 p a b c Apply (Bazaar1 p a b) Source Methods(<.>) :: Bazaar1 p a b (c -> d) -> Bazaar1 p a b c -> Bazaar1 p a b d(.>) :: Bazaar1 p a b c -> Bazaar1 p a b d -> Bazaar1 p a b d(<.) :: Bazaar1 p a b c -> Bazaar1 p a b d -> Bazaar1 p a b c

type Bazaar1' p a = Bazaar1 p a a Source

This alias is helpful when it comes to reducing repetition in type signatures.

```type `Bazaar1'` p a t = `Bazaar1` p a a t
```

newtype BazaarT1 p g a b t Source

`BazaarT1` is like `Bazaar1`, except that it provides a questionable `Contravariant` instance To protect this instance it relies on the soundness of another `Contravariant` type, and usage conventions.

For example. This lets us write a suitably polymorphic and lazy `taking`, but there must be a better way!

Constructors

 BazaarT1 FieldsrunBazaarT1 :: forall f. Apply f => p a (f b) -> f t

Instances

 Corepresentable p => Sellable p (BazaarT1 p g) Source Methodssell :: p a (BazaarT1 p g a b b) Source Profunctor p => Bizarre1 p (BazaarT1 p g) Source Methodsbazaar1 :: Apply f => p a (f b) -> BazaarT1 p g a b t -> f t Source Conjoined p => IndexedComonad (BazaarT1 p g) Source Methodsiextract :: BazaarT1 p g a a t -> t Sourceiduplicate :: BazaarT1 p g a c t -> BazaarT1 p g a b (BazaarT1 p g b c t) Sourceiextend :: (BazaarT1 p g b c t -> r) -> BazaarT1 p g a c t -> BazaarT1 p g a b r Source Source Methodsifmap :: (s -> t) -> BazaarT1 p g a b s -> BazaarT1 p g a b t Source Functor (BazaarT1 p g a b) Source Methodsfmap :: (c -> d) -> BazaarT1 p g a b c -> BazaarT1 p g a b d(<\$) :: c -> BazaarT1 p g a b d -> BazaarT1 p g a b c (Profunctor p, Contravariant g) => Contravariant (BazaarT1 p g a b) Source Methodscontramap :: (c -> d) -> BazaarT1 p g a b d -> BazaarT1 p g a b c(>\$) :: c -> BazaarT1 p g a b c -> BazaarT1 p g a b d ((~) * a b, Conjoined p) => Comonad (BazaarT1 p g a b) Source Methodsextract :: BazaarT1 p g a b c -> cduplicate :: BazaarT1 p g a b c -> BazaarT1 p g a b (BazaarT1 p g a b c)extend :: (BazaarT1 p g a b c -> d) -> BazaarT1 p g a b c -> BazaarT1 p g a b d ((~) * a b, Conjoined p) => ComonadApply (BazaarT1 p g a b) Source Methods(<@>) :: BazaarT1 p g a b (c -> d) -> BazaarT1 p g a b c -> BazaarT1 p g a b d(@>) :: BazaarT1 p g a b c -> BazaarT1 p g a b d -> BazaarT1 p g a b d(<@) :: BazaarT1 p g a b c -> BazaarT1 p g a b d -> BazaarT1 p g a b c Apply (BazaarT1 p g a b) Source Methods(<.>) :: BazaarT1 p g a b (c -> d) -> BazaarT1 p g a b c -> BazaarT1 p g a b d(.>) :: BazaarT1 p g a b c -> BazaarT1 p g a b d -> BazaarT1 p g a b d(<.) :: BazaarT1 p g a b c -> BazaarT1 p g a b d -> BazaarT1 p g a b c Contravariant g => Semigroup (BazaarT1 p g a b t) Source Methods(<>) :: BazaarT1 p g a b t -> BazaarT1 p g a b t -> BazaarT1 p g a b tsconcat :: NonEmpty (BazaarT1 p g a b t) -> BazaarT1 p g a b ttimes1p :: Natural -> BazaarT1 p g a b t -> BazaarT1 p g a b t

type BazaarT1' p g a = BazaarT1 p g a a Source

This alias is helpful when it comes to reducing repetition in type signatures.

```type `BazaarT1'` p g a t = `BazaarT1` p g a a t
```