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
- data Magma i t b a where
- runMagma :: Magma i t a a -> t
- newtype Molten i a b t = Molten { }
- data Mafic a b t = Mafic Int ( Int -> Magma Int t b a)
- runMafic :: Mafic a b t -> Magma Int t b a
- data TakingWhile p (g :: * -> *) a b t = TakingWhile Bool t ( Bool -> Magma () t b ( Corep p a))
- runTakingWhile :: TakingWhile p f a b t -> Magma () t b ( Corep p a)
Magma
data Magma i t b a where Source #
This provides a way to peek at the internal structure of a
Traversal
or
IndexedTraversal
MagmaAp :: Magma i (x -> y) b a -> Magma i x b a -> Magma i y b a | |
MagmaPure :: x -> Magma i x b a | |
MagmaFmap :: (x -> y) -> Magma i x b a -> Magma i y b a | |
Magma :: i -> a -> Magma i b b a |
Instances
FunctorWithIndex i ( Magma i t b) Source # | |
FoldableWithIndex i ( Magma i t b) Source # | |
Defined in Control.Lens.Internal.Magma ifoldMap :: Monoid m => (i -> a -> m) -> Magma i t b a -> m Source # ifoldMap' :: Monoid m => (i -> a -> m) -> Magma i t b a -> m Source # ifoldr :: (i -> a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source # ifoldl :: (i -> b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source # ifoldr' :: (i -> a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source # ifoldl' :: (i -> b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source # |
|
TraversableWithIndex i ( Magma i t b) Source # | |
Defined in Control.Lens.Internal.Magma |
|
Functor ( Magma i t b) Source # | |
Foldable ( Magma i t b) Source # | |
Defined in Control.Lens.Internal.Magma fold :: Monoid m => Magma i t b m -> m Source # foldMap :: Monoid m => (a -> m) -> Magma i t b a -> m Source # foldMap' :: Monoid m => (a -> m) -> Magma i t b a -> m Source # foldr :: (a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source # foldr' :: (a -> b0 -> b0) -> b0 -> Magma i t b a -> b0 Source # foldl :: (b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source # foldl' :: (b0 -> a -> b0) -> b0 -> Magma i t b a -> b0 Source # foldr1 :: (a -> a -> a) -> Magma i t b a -> a Source # foldl1 :: (a -> a -> a) -> Magma i t b a -> a Source # toList :: Magma i t b a -> [a] Source # null :: Magma i t b a -> Bool Source # length :: Magma i t b a -> Int Source # elem :: Eq a => a -> Magma i t b a -> Bool Source # maximum :: Ord a => Magma i t b a -> a Source # minimum :: Ord a => Magma i t b a -> a Source # |
|
Traversable ( Magma i t b) Source # | |
Defined in Control.Lens.Internal.Magma traverse :: Applicative f => (a -> f b0) -> Magma i t b a -> f ( Magma i t b b0) Source # sequenceA :: Applicative f => Magma i t b (f a) -> f ( Magma i t b a) Source # mapM :: Monad m => (a -> m b0) -> Magma i t b a -> m ( Magma i t b b0) Source # sequence :: Monad m => Magma i t b (m a) -> m ( Magma i t b a) Source # |
|
( Show i, Show a) => Show ( Magma i t b a) Source # | |
runMagma :: Magma i t a a -> t Source #
Run a
Magma
where all the individual leaves have been converted to the
expected type
Molten
newtype Molten i a b t Source #
This is a a non-reassociating initially encoded version of
Bazaar
.
Instances
IndexedComonad ( Molten i) Source # | |
IndexedFunctor ( Molten i) Source # | |
Sellable ( Indexed i) ( Molten i) Source # | |
Bizarre ( Indexed i) ( Molten i) Source # | |
Defined in Control.Lens.Internal.Magma |
|
Functor ( Molten i a b) Source # | |
Applicative ( Molten i a b) Source # | |
Defined in Control.Lens.Internal.Magma pure :: a0 -> Molten i a b a0 Source # (<*>) :: Molten i a b (a0 -> b0) -> Molten i a b a0 -> Molten i a b b0 Source # liftA2 :: (a0 -> b0 -> c) -> Molten i a b a0 -> Molten i a b b0 -> Molten i a b c Source # (*>) :: Molten i a b a0 -> Molten i a b b0 -> Molten i a b b0 Source # (<*) :: Molten i a b a0 -> Molten i a b b0 -> Molten i a b a0 Source # |
|
a ~ b => Comonad ( Molten i a b) Source # | |
Apply ( Molten i a b) Source # | |
Defined in Control.Lens.Internal.Magma (<.>) :: Molten i a b (a0 -> b0) -> Molten i a b a0 -> Molten i a b b0 Source # (.>) :: Molten i a b a0 -> Molten i a b b0 -> Molten i a b b0 Source # (<.) :: Molten i a b a0 -> Molten i a b b0 -> Molten i a b a0 Source # liftF2 :: (a0 -> b0 -> c) -> Molten i a b a0 -> Molten i a b b0 -> Molten i a b c Source # |
Mafic
This is used to generate an indexed magma from an unindexed source
By constructing it this way we avoid infinite reassociations in sums where possible.
Instances
IndexedFunctor Mafic Source # | |
Bizarre ( Indexed Int ) Mafic Source # | |
Defined in Control.Lens.Internal.Magma |
|
Functor ( Mafic a b) Source # | |
Applicative ( Mafic a b) Source # | |
Defined in Control.Lens.Internal.Magma pure :: a0 -> Mafic a b a0 Source # (<*>) :: Mafic a b (a0 -> b0) -> Mafic a b a0 -> Mafic a b b0 Source # liftA2 :: (a0 -> b0 -> c) -> Mafic a b a0 -> Mafic a b b0 -> Mafic a b c Source # (*>) :: Mafic a b a0 -> Mafic a b b0 -> Mafic a b b0 Source # (<*) :: Mafic a b a0 -> Mafic a b b0 -> Mafic a b a0 Source # |
|
Apply ( Mafic a b) Source # | |
Defined in Control.Lens.Internal.Magma |
|
Sellable ((->) :: Type -> Type -> Type ) Mafic Source # | |
Defined in Control.Lens.Internal.Magma |
TakingWhile
data TakingWhile p (g :: * -> *) a b t Source #
This is used to generate an indexed magma from an unindexed source
By constructing it this way we avoid infinite reassociations where possible.
In
,
TakingWhile
p g a b t
g
has a
nominal
role to avoid exposing an illegal _|_ via
Contravariant
,
while the remaining arguments are degraded to a
nominal
role by the invariants of
Magma
TakingWhile Bool t ( Bool -> Magma () t b ( Corep p a)) |
Instances
runTakingWhile :: TakingWhile p f a b t -> Magma () t b ( Corep p a) Source #
Generate a
Magma
with leaves only while the predicate holds from left to right.