{-# 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 (By6Bits (Branch element))) data Branch element = BranchesBranch !(Hamt element) | LeavesBranch !Int !(SmallArray element)