Portability  nonportable 

Stability  experimental 
Maintainer  Edward Kmett <ekmett@gmail.com> 
Safe Haskell  Trustworthy 
This module provides implementation details of the combinators in
Control.Lens.Level, which provides for the breadthfirst Traversal
of
an arbitrary Traversal
.
Levels
This data type represents a pathcompressed copy of one level of a source data structure. We can safely use pathcompression because we know the depth of the tree.
Path compression is performed by viewing a Level
as a PATRICIA trie of the
paths into the structure to leaves at a given depth, similar in many ways
to a IntMap
, but unlike a regular PATRICIA trie we do not need
to store the mask bits merely the depth of the fork.
One invariant of this structure is that underneath a Two
node you will not
find any Zero
nodes, so Zero
can only occur at the root.
(FunctorWithIndex i (Level i), FoldableWithIndex i (Level i), Traversable (Level i)) => TraversableWithIndex i (Level i)  
Foldable (Level i) => FoldableWithIndex i (Level i)  
Functor (Level i) => FunctorWithIndex i (Level i)  
Functor (Level i)  
Foldable (Level i)  
(Functor (Level i), Foldable (Level i)) => Traversable (Level i)  
(Eq i, Eq a) => Eq (Level i a)  
(Eq (Level i a), Ord i, Ord a) => Ord (Level i a)  
(Read i, Read a) => Read (Level i a)  
(Show i, Show a) => Show (Level i a) 
Deepening  

deepening :: i > a > Deepening i aSource
Generate the leaf of a given Deepening
based on whether or not we're at the correct depth.
This is an illegal Applicative
used to replace the contents of a list of consecutive Level
values
representing each layer of a structure into the original shape that they were derived from.
Attempting to Flow
something back into a shape other than the one it was taken from will fail.