lens-4.12.3: Lenses, Folds and Traversals

Copyright(C) 2012-2015 Edward Kmett
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellSafe
LanguageHaskell98

Control.Lens.Internal.Magma

Contents

Description

 

Synopsis

Magma

data Magma i t b a where Source

This provides a way to peek at the internal structure of a Traversal or IndexedTraversal

Constructors

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

TraversableWithIndex i (Magma i t b) Source 

Methods

itraverse :: Applicative f => (i -> a -> f c) -> Magma i t b a -> f (Magma i t b c) Source

itraversed :: (Indexable i p, Applicative f) => p a (f c) -> Magma i t b a -> f (Magma i t b c) Source

FoldableWithIndex i (Magma i t b) Source 

Methods

ifoldMap :: Monoid m => (i -> a -> m) -> Magma i t b a -> m Source

ifolded :: (Indexable i p, Contravariant f, Applicative f) => p a (f a) -> Magma i t b a -> f (Magma i t b a) Source

ifoldr :: (i -> a -> c -> c) -> c -> Magma i t b a -> c Source

ifoldl :: (i -> a -> c -> a) -> a -> Magma i t b c -> a Source

ifoldr' :: (i -> a -> c -> c) -> c -> Magma i t b a -> c Source

ifoldl' :: (i -> a -> c -> a) -> a -> Magma i t b c -> a Source

FunctorWithIndex i (Magma i t b) Source 

Methods

imap :: (i -> a -> c) -> Magma i t b a -> Magma i t b c Source

imapped :: (Indexable i p, Settable f) => p a (f c) -> Magma i t b a -> f (Magma i t b c) Source

Functor (Magma i t b) Source 

Methods

fmap :: (a -> c) -> Magma i t b a -> Magma i t b c

(<$) :: a -> Magma i t b c -> Magma i t b a

Foldable (Magma i t b) Source 

Methods

fold :: Monoid m => Magma i t b m -> m

foldMap :: Monoid m => (a -> m) -> Magma i t b a -> m

foldr :: (a -> c -> c) -> c -> Magma i t b a -> c

foldr' :: (a -> c -> c) -> c -> Magma i t b a -> c

foldl :: (a -> c -> a) -> a -> Magma i t b c -> a

foldl' :: (a -> c -> a) -> a -> Magma i t b c -> a

foldr1 :: (a -> a -> a) -> Magma i t b a -> a

foldl1 :: (a -> a -> a) -> Magma i t b a -> a

toList :: Magma i t b a -> [a]

null :: Magma i t b a -> Bool

length :: Magma i t b a -> Int

elem :: Eq a => a -> Magma i t b a -> Bool

maximum :: Ord a => Magma i t b a -> a

minimum :: Ord a => Magma i t b a -> a

sum :: Num a => Magma i t b a -> a

product :: Num a => Magma i t b a -> a

Traversable (Magma i t b) Source 

Methods

traverse :: Applicative f => (a -> f c) -> Magma i t b a -> f (Magma i t b c)

sequenceA :: Applicative f => Magma i t b (f a) -> f (Magma i t b a)

mapM :: Monad m => (a -> m c) -> Magma i t b a -> m (Magma i t b c)

sequence :: Monad m => Magma i t b (m a) -> m (Magma i t b a)

(Show i, Show a) => Show (Magma i t b a) Source 

Methods

showsPrec :: Int -> Magma i t b a -> ShowS

show :: Magma i t b a -> String

showList :: [Magma i t b a] -> ShowS

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.

Constructors

Molten 

Fields

Instances

IndexedComonad (Molten i) Source 

Methods

iextract :: Molten i a a t -> t Source

iduplicate :: Molten i a c t -> Molten i a b (Molten i b c t) Source

iextend :: (Molten i b c t -> r) -> Molten i a c t -> Molten i a b r Source

IndexedFunctor (Molten i) Source 

Methods

ifmap :: (s -> t) -> Molten i a b s -> Molten i a b t Source

Sellable (Indexed i) (Molten i) Source 

Methods

sell :: Indexed i a (Molten i a b b) Source

Bizarre (Indexed i) (Molten i) Source 

Methods

bazaar :: Applicative f => Indexed i a (f b) -> Molten i a b t -> f t Source

Functor (Molten i a b) Source 

Methods

fmap :: (c -> d) -> Molten i a b c -> Molten i a b d

(<$) :: c -> Molten i a b d -> Molten i a b c

Applicative (Molten i a b) Source 

Methods

pure :: c -> Molten i a b c

(<*>) :: Molten i a b (c -> d) -> Molten i a b c -> Molten i a b d

(*>) :: Molten i a b c -> Molten i a b d -> Molten i a b d

(<*) :: Molten i a b c -> Molten i a b d -> Molten i a b c

(~) * a b => Comonad (Molten i a b) Source 

Methods

extract :: Molten i a b c -> c

duplicate :: Molten i a b c -> Molten i a b (Molten i a b c)

extend :: (Molten i a b c -> d) -> Molten i a b c -> Molten i a b d

Apply (Molten i a b) Source 

Methods

(<.>) :: Molten i a b (c -> d) -> Molten i a b c -> Molten i a b d

(.>) :: Molten i a b c -> Molten i a b d -> Molten i a b d

(<.) :: Molten i a b c -> Molten i a b d -> Molten i a b c

Mafic

data Mafic 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 in sums where possible.

Constructors

Mafic Int (Int -> Magma Int t b a) 

Instances

IndexedFunctor Mafic Source 

Methods

ifmap :: (s -> t) -> Mafic a b s -> Mafic a b t Source

Sellable (->) Mafic Source 

Methods

sell :: a -> Mafic a b b Source

Bizarre (Indexed Int) Mafic Source 

Methods

bazaar :: Applicative f => Indexed Int a (f b) -> Mafic a b t -> f t Source

Functor (Mafic a b) Source 

Methods

fmap :: (c -> d) -> Mafic a b c -> Mafic a b d

(<$) :: c -> Mafic a b d -> Mafic a b c

Applicative (Mafic a b) Source 

Methods

pure :: c -> Mafic a b c

(<*>) :: Mafic a b (c -> d) -> Mafic a b c -> Mafic a b d

(*>) :: Mafic a b c -> Mafic a b d -> Mafic a b d

(<*) :: Mafic a b c -> Mafic a b d -> Mafic a b c

Apply (Mafic a b) Source 

Methods

(<.>) :: Mafic a b (c -> d) -> Mafic a b c -> Mafic a b d

(.>) :: Mafic a b c -> Mafic a b d -> Mafic a b d

(<.) :: Mafic a b c -> Mafic a b d -> Mafic a b c

runMafic :: Mafic a b t -> Magma Int t b a Source

Generate a Magma using from a prefix sum.

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

Constructors

TakingWhile Bool t (Bool -> Magma () t b (Corep p a)) 

Instances

Corepresentable p => Bizarre p (TakingWhile p g) Source 

Methods

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

IndexedFunctor (TakingWhile p f) Source 

Methods

ifmap :: (s -> t) -> TakingWhile p f a b s -> TakingWhile p f a b t Source

Functor (TakingWhile p f a b) Source 

Methods

fmap :: (c -> d) -> TakingWhile p f a b c -> TakingWhile p f a b d

(<$) :: c -> TakingWhile p f a b d -> TakingWhile p f a b c

Applicative (TakingWhile p f a b) Source 

Methods

pure :: c -> TakingWhile p f a b c

(<*>) :: TakingWhile p f a b (c -> d) -> TakingWhile p f a b c -> TakingWhile p f a b d

(*>) :: TakingWhile p f a b c -> TakingWhile p f a b d -> TakingWhile p f a b d

(<*) :: TakingWhile p f a b c -> TakingWhile p f a b d -> TakingWhile p f a b c

Contravariant f => Contravariant (TakingWhile p f a b) Source 

Methods

contramap :: (c -> d) -> TakingWhile p f a b d -> TakingWhile p f a b c

(>$) :: c -> TakingWhile p f a b c -> TakingWhile p f a b d

Apply (TakingWhile p f a b) Source 

Methods

(<.>) :: TakingWhile p f a b (c -> d) -> TakingWhile p f a b c -> TakingWhile p f a b d

(.>) :: TakingWhile p f a b c -> TakingWhile p f a b d -> TakingWhile p f a b d

(<.) :: TakingWhile p f a b c -> TakingWhile p f a b d -> TakingWhile p f a b c

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.