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 |
Synopsis
-
class
Profunctor
p =>
Bizarre
p w | w -> p
where
- bazaar :: Applicative f => p a (f b) -> w a b t -> f t
-
newtype
Bazaar
p a b t =
Bazaar
{
- runBazaar :: forall f. Applicative f => p a (f b) -> f t
- type Bazaar' p a = Bazaar p a a
-
newtype
BazaarT
p (g :: * -> *) a b t =
BazaarT
{
- runBazaarT :: forall f. Applicative f => p a (f b) -> f t
- type BazaarT' p g a = BazaarT p g a a
- class Profunctor p => Bizarre1 p w | w -> p where
-
newtype
Bazaar1
p a b t =
Bazaar1
{
- runBazaar1 :: forall f. Apply f => p a (f b) -> f t
- type Bazaar1' p a = Bazaar1 p a a
-
newtype
BazaarT1
p (g :: * -> *) a b t =
BazaarT1
{
- runBazaarT1 :: forall f. Apply f => p a (f b) -> f t
- type BazaarT1' p g a = BazaarT1 p g a a
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.
bazaar :: Applicative f => p a (f b) -> w a b t -> f t Source #
Instances
Profunctor p => Bizarre p ( Bazaar p) Source # | |
Defined in Control.Lens.Internal.Bazaar bazaar :: Applicative f => p a (f b) -> Bazaar p a b t -> f t Source # |
|
Profunctor p => Bizarre p ( BazaarT p g) Source # | |
Defined in Control.Lens.Internal.Bazaar bazaar :: Applicative f => p a (f b) -> BazaarT p g a b t -> f t Source # |
|
Corepresentable p => Bizarre p ( TakingWhile p g) Source # | |
Defined in Control.Lens.Internal.Magma bazaar :: Applicative f => p a (f b) -> TakingWhile p g a b t -> f t Source # |
|
Bizarre ( Indexed Int ) Mafic Source # | |
Defined in Control.Lens.Internal.Magma |
|
Bizarre ( Indexed i) ( Molten i) Source # | |
Defined in Control.Lens.Internal.Magma |
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
holds an
Context
a b t
a
and a function from
b
to
t
, a
holds
Bazaar
a b t
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
.
Bazaar | |
|
Instances
Corepresentable p => Sellable p ( Bazaar p) Source # | |
Defined in Control.Lens.Internal.Bazaar |
|
Profunctor p => Bizarre p ( Bazaar p) Source # | |
Defined in Control.Lens.Internal.Bazaar bazaar :: Applicative f => p a (f b) -> Bazaar p a b t -> f t Source # |
|
Conjoined p => IndexedComonad ( Bazaar p) Source # | |
IndexedFunctor ( Bazaar p) Source # | |
Functor ( Bazaar p a b) Source # | |
Applicative ( Bazaar p a b) Source # | |
Defined in Control.Lens.Internal.Bazaar 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 # | |
(a ~ b, Conjoined p) => ComonadApply ( Bazaar p a b) Source # | |
Apply ( Bazaar p a b) Source # | |
Defined in Control.Lens.Internal.Bazaar (<.>) :: 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 # |
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!
BazaarT | |
|
Instances
class Profunctor p => Bizarre1 p w | w -> p where Source #
Instances
Profunctor p => Bizarre1 p ( Bazaar1 p) Source # | |
Profunctor p => Bizarre1 p ( BazaarT1 p g) 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
holds an
Context
a b t
a
and a function from
b
to
t
, a
holds
Bazaar1
a b t
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
.
Bazaar1 | |
|
Instances
Corepresentable p => Sellable p ( Bazaar1 p) Source # | |
Defined in Control.Lens.Internal.Bazaar |
|
Profunctor p => Bizarre1 p ( Bazaar1 p) Source # | |
Conjoined p => IndexedComonad ( Bazaar1 p) Source # | |
IndexedFunctor ( Bazaar1 p) Source # | |
Functor ( Bazaar1 p a b) Source # | |
(a ~ b, Conjoined p) => Comonad ( Bazaar1 p a b) Source # | |
(a ~ b, Conjoined p) => ComonadApply ( Bazaar1 p a b) Source # | |
Apply ( Bazaar1 p a b) Source # | |
Defined in Control.Lens.Internal.Bazaar (<.>) :: 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 # |
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!
BazaarT1 | |
|
Instances
Corepresentable p => Sellable p ( BazaarT1 p g) Source # | |
Defined in Control.Lens.Internal.Bazaar |
|
Profunctor p => Bizarre1 p ( BazaarT1 p g) Source # | |
Conjoined p => IndexedComonad ( BazaarT1 p g) Source # | |
IndexedFunctor ( BazaarT1 p g) Source # | |
Functor ( BazaarT1 p g a b) Source # | |
( Profunctor p, Contravariant g) => Contravariant ( BazaarT1 p g a b) Source # | |
(a ~ b, Conjoined p) => Comonad ( BazaarT1 p g a b) Source # | |
(a ~ b, Conjoined p) => ComonadApply ( BazaarT1 p g a b) Source # | |
Apply ( BazaarT1 p g a b) Source # | |
Defined in Control.Lens.Internal.Bazaar (<.>) :: 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 # | |