{-# LANGUAGE MagicHash #-} module Data.TrieMap.Sized where import GHC.Exts class Sized a where getSize# :: a -> Int# newtype Elem a = Elem {getElem :: a} instance Sized (Elem a) where getSize# _ = 1# getSize :: Sized a => a -> Int getSize a = I# (getSize# a) unbox :: Int -> Int# unbox (I# i#) = i#