{-# 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 :: * -> *) a = a -> Int

newtype Elem a = Elem {getElem :: a}

sizeElem :: HSized phi (Elem a)
sizeElem _ = 1