{-# LANGUAGE Rank2Types, KindSignatures #-} module Data.TrieMap.MultiRec.Sized where -- import Data.TrieMap.Sized -- -- class HSized phi r where -- hGetSize :: phi ix -> r ix -> Int -- -- newtype ElF phi r ix = ElF (r ix) -- -- instance (HSized phi r, El phi ix) => Sized (ElF phi r) where -- getSize (ElF x) = hGetSize proof x type HSized (phi :: * -> *) r = forall ix . r ix -> Int newtype Elem a = Elem {getElem :: a} sizeElem :: HSized phi Elem sizeElem _ = 1