{-# LANGUAGE ExistentialQuantification #-} module Data.Exists.Constrained where import Data.Typeable -- | Dependent sum data E c a = forall k . (Typeable k, c k) => E { unE :: a k }