{-# OPTIONS_HADDOCK not-home #-} {-| Data structure internals, helper operations and unsafe functions. == Implementation The tree is structurally identical to the 'Data.Patricia.Word.Strict.Unsafe.Patricia' tree, holding 'Color's as values. A key \(k\) in the tree denotes a right-open interval \([k, k_R)\) within which every key has the same color as \(k\). \(k_R\) is the key immediately to the right of \(k\), or, if \(k\) is the rightmost key, \(+\infty\). Two adjacent intervals __must not__ have the same color. This both removes redundancies and allows to make assumptions about the color of the key immediately to the left. The following is a visual example of a possible 4-bit tree under these rules: ![4-bit tree](https://raw.githubusercontent.com/sergv/radix-tree/master/images/4bit.svg) -} module Data.Zebra.Word.Unsafe ( Zebra (..) , Color (..) -- * Bit operations , Prefix , Key -- | === Compare , beyond , upper , lower -- | === Create , Mask , zeroBit , mask , branchingBit -- * Directional -- ** Size , unsafeSizeL , unsafeSizeR -- ** Insert , unsafeFillL -- * Range , Range (..) -- ** Size , unsafeMonoRange , unsafeSizeRange -- ** Insert , unsafeFillRange -- ** Fold -- | === Left-to-right , unsafeFoldlRange , unsafeFoldlRange' -- | === Right-to-left , unsafeFoldrRange , unsafeFoldrRange' -- * Full tree -- ** Size , unsafeSize ) where import Data.Zebra.Word.Internal import Radix.Word.Foundation