module Data.Base where

import Prelude


type family Base a :: *


type family Bases a where Bases '[]       = '[]
                          Bases (a ': as) = Base a ': Bases as

--type family MatchedBase bases a :: Maybe * where
--    MatchedBase (b ': bs) a = If (Base b :== Base a) ('Just b) (MatchedBase bs a)
--    MatchedBase '[]       a = 'Nothing


--type instance Base (Maybe a) = Proxy Maybe