lens-5.0.1: Lenses, Folds and Traversals
Copyright (C) 2012-2016 Edward Kmett
License BSD-style (see the file LICENSE)
Maintainer Edward Kmett <ekmett@gmail.com>
Stability experimental
Portability non-portable
Safe Haskell Safe-Inferred
Language Haskell2010

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 #

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 .

http://twanvl.nl/blog/haskell/non-regular1

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

Fields

Instances

Instances details
Corepresentable p => Sellable p ( Bazaar p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

sell :: p a ( Bazaar p a b b) Source #

Profunctor p => Bizarre p ( Bazaar p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

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

Conjoined p => IndexedComonad ( Bazaar p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

iextract :: Bazaar p a a t -> t Source #

iduplicate :: Bazaar p a c t -> Bazaar p a b ( Bazaar p b c t) Source #

iextend :: ( Bazaar p b c t -> r) -> Bazaar p a c t -> Bazaar p a b r Source #

IndexedFunctor ( Bazaar p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

ifmap :: (s -> t) -> Bazaar p a b s -> Bazaar p a b t Source #

Functor ( Bazaar p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

fmap :: (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source #

(<$) :: a0 -> Bazaar p a b b0 -> Bazaar p a b a0 Source #

Applicative ( Bazaar p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

pure :: a0 -> Bazaar p a b a0 Source #

(<*>) :: Bazaar p a b (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source #

liftA2 :: (a0 -> b0 -> c) -> Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b c Source #

(*>) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b b0 Source #

(<*) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b a0 Source #

(a ~ b, Conjoined p) => Comonad ( Bazaar p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

extract :: Bazaar p a b a0 -> a0 Source #

duplicate :: Bazaar p a b a0 -> Bazaar p a b ( Bazaar p a b a0) Source #

extend :: ( Bazaar p a b a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source #

(a ~ b, Conjoined p) => ComonadApply ( Bazaar p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<@>) :: Bazaar p a b (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source #

(@>) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b b0 Source #

(<@) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b a0 Source #

Apply ( Bazaar p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<.>) :: Bazaar p a b (a0 -> b0) -> Bazaar p a b a0 -> Bazaar p a b b0 Source #

(.>) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b b0 Source #

(<.) :: Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b a0 Source #

liftF2 :: (a0 -> b0 -> c) -> Bazaar p a b a0 -> Bazaar p a b b0 -> Bazaar p a b c Source #

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

Fields

Instances

Instances details
Corepresentable p => Sellable p ( BazaarT p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

sell :: p a ( BazaarT p g a b b) Source #

Profunctor p => Bizarre p ( BazaarT p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

bazaar :: Applicative f => p a (f b) -> BazaarT p g a b t -> f t Source #

Conjoined p => IndexedComonad ( BazaarT p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

iextract :: BazaarT p g a a t -> t Source #

iduplicate :: BazaarT p g a c t -> BazaarT p g a b ( BazaarT p g b c t) Source #

iextend :: ( BazaarT p g b c t -> r) -> BazaarT p g a c t -> BazaarT p g a b r Source #

IndexedFunctor ( BazaarT p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

ifmap :: (s -> t) -> BazaarT p g a b s -> BazaarT p g a b t Source #

Functor ( BazaarT p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

fmap :: (a0 -> b0) -> BazaarT p g a b a0 -> BazaarT p g a b b0 Source #

(<$) :: a0 -> BazaarT p g a b b0 -> BazaarT p g a b a0 Source #

Applicative ( BazaarT p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

pure :: a0 -> BazaarT p g a b a0 Source #

(<*>) :: BazaarT p g a b (a0 -> b0) -> BazaarT p g a b a0 -> BazaarT p g a b b0 Source #

liftA2 :: (a0 -> b0 -> c) -> BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b c Source #

(*>) :: BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b b0 Source #

(<*) :: BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b a0 Source #

( Profunctor p, Contravariant g) => Contravariant ( BazaarT p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

contramap :: (a0 -> b0) -> BazaarT p g a b b0 -> BazaarT p g a b a0 Source #

(>$) :: b0 -> BazaarT p g a b b0 -> BazaarT p g a b a0 Source #

(a ~ b, Conjoined p) => Comonad ( BazaarT p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

extract :: BazaarT p g a b a0 -> a0 Source #

duplicate :: BazaarT p g a b a0 -> BazaarT p g a b ( BazaarT p g a b a0) Source #

extend :: ( BazaarT p g a b a0 -> b0) -> BazaarT p g a b a0 -> BazaarT p g a b b0 Source #

(a ~ b, Conjoined p) => ComonadApply ( BazaarT p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<@>) :: BazaarT p g a b (a0 -> b0) -> BazaarT p g a b a0 -> BazaarT p g a b b0 Source #

(@>) :: BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b b0 Source #

(<@) :: BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b a0 Source #

Apply ( BazaarT p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<.>) :: BazaarT p g a b (a0 -> b0) -> BazaarT p g a b a0 -> BazaarT p g a b b0 Source #

(.>) :: BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b b0 Source #

(<.) :: BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b a0 Source #

liftF2 :: (a0 -> b0 -> c) -> BazaarT p g a b a0 -> BazaarT p g a b b0 -> BazaarT p g a b c Source #

Contravariant g => Semigroup ( BazaarT p g a b t) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<>) :: BazaarT p g a b t -> BazaarT p g a b t -> BazaarT p g a b t Source #

sconcat :: NonEmpty ( BazaarT p g a b t) -> BazaarT p g a b t Source #

stimes :: Integral b0 => b0 -> BazaarT p g a b t -> BazaarT p g a b t Source #

Contravariant g => Monoid ( BazaarT p g a b t) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

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

Instances details
Profunctor p => Bizarre1 p ( Bazaar1 p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

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

Profunctor p => Bizarre1 p ( BazaarT1 p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

bazaar1 :: 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 .

http://twanvl.nl/blog/haskell/non-regular1

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

Fields

Instances

Instances details
Corepresentable p => Sellable p ( Bazaar1 p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

sell :: p a ( Bazaar1 p a b b) Source #

Profunctor p => Bizarre1 p ( Bazaar1 p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

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

Conjoined p => IndexedComonad ( Bazaar1 p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

IndexedFunctor ( Bazaar1 p) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

ifmap :: (s -> t) -> Bazaar1 p a b s -> Bazaar1 p a b t Source #

Functor ( Bazaar1 p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

fmap :: (a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 Source #

(<$) :: a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b a0 Source #

(a ~ b, Conjoined p) => Comonad ( Bazaar1 p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

extract :: Bazaar1 p a b a0 -> a0 Source #

duplicate :: Bazaar1 p a b a0 -> Bazaar1 p a b ( Bazaar1 p a b a0) Source #

extend :: ( Bazaar1 p a b a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 Source #

(a ~ b, Conjoined p) => ComonadApply ( Bazaar1 p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<@>) :: Bazaar1 p a b (a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 Source #

(@>) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b b0 Source #

(<@) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b a0 Source #

Apply ( Bazaar1 p a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<.>) :: Bazaar1 p a b (a0 -> b0) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 Source #

(.>) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b b0 Source #

(<.) :: Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b a0 Source #

liftF2 :: (a0 -> b0 -> c) -> Bazaar1 p a b a0 -> Bazaar1 p a b b0 -> Bazaar1 p a b c Source #

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

Fields

Instances

Instances details
Corepresentable p => Sellable p ( BazaarT1 p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

sell :: p a ( BazaarT1 p g a b b) Source #

Profunctor p => Bizarre1 p ( BazaarT1 p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

bazaar1 :: Apply f => p a (f b) -> BazaarT1 p g a b t -> f t Source #

Conjoined p => IndexedComonad ( BazaarT1 p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

iextract :: BazaarT1 p g a a t -> t Source #

iduplicate :: BazaarT1 p g a c t -> BazaarT1 p g a b ( BazaarT1 p g b c t) Source #

iextend :: ( BazaarT1 p g b c t -> r) -> BazaarT1 p g a c t -> BazaarT1 p g a b r Source #

IndexedFunctor ( BazaarT1 p g) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

ifmap :: (s -> t) -> BazaarT1 p g a b s -> BazaarT1 p g a b t Source #

Functor ( BazaarT1 p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

fmap :: (a0 -> b0) -> BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 Source #

(<$) :: a0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b a0 Source #

( Profunctor p, Contravariant g) => Contravariant ( BazaarT1 p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

contramap :: (a0 -> b0) -> BazaarT1 p g a b b0 -> BazaarT1 p g a b a0 Source #

(>$) :: b0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b a0 Source #

(a ~ b, Conjoined p) => Comonad ( BazaarT1 p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

extract :: BazaarT1 p g a b a0 -> a0 Source #

duplicate :: BazaarT1 p g a b a0 -> BazaarT1 p g a b ( BazaarT1 p g a b a0) Source #

extend :: ( BazaarT1 p g a b a0 -> b0) -> BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 Source #

(a ~ b, Conjoined p) => ComonadApply ( BazaarT1 p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<@>) :: BazaarT1 p g a b (a0 -> b0) -> BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 Source #

(@>) :: BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b b0 Source #

(<@) :: BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b a0 Source #

Apply ( BazaarT1 p g a b) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

Methods

(<.>) :: BazaarT1 p g a b (a0 -> b0) -> BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 Source #

(.>) :: BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b b0 Source #

(<.) :: BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b a0 Source #

liftF2 :: (a0 -> b0 -> c) -> BazaarT1 p g a b a0 -> BazaarT1 p g a b b0 -> BazaarT1 p g a b c Source #

Contravariant g => Semigroup ( BazaarT1 p g a b t) Source #
Instance details

Defined in Control.Lens.Internal.Bazaar

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