{-# LANGUAGE Rank2Types #-} module Data.TrieMap.Sized where -- class Sized f where -- getSize :: f a -> Int -- -- newtype Elem a = Elem {getElem :: a} -- -- instance Sized Elem where -- getSize _ = 1 type Sized a = a -> Int newtype Elem a = Elem {getElem :: a} elemSize :: Sized (Elem a) elemSize _ = 1