stm-hamt-1.2: library/StmHamt/Types.hs
{-# OPTIONS_GHC -funbox-strict-fields #-}
module StmHamt.Types where
import StmHamt.Prelude
{-|
STM-specialized Hash Array Mapped Trie,
extended with its size-tracking functionality,
allowing for a fast 'size' operation.
-}
data SizedHamt element = SizedHamt !(TVar Int) !(Hamt element)
{-|
STM-specialized Hash Array Mapped Trie.
-}
newtype Hamt element = Hamt (TVar (SparseSmallArray (Branch element)))
data Branch element = BranchesBranch !(Hamt element) | LeavesBranch !Int !(SmallArray element)