{-# LANGUAGE UndecidableInstances #-} module Data.Type.List where -- | Reverse a type level list. type Reverse as = Reverse' as '[] type family Reverse' (as :: [k]) (acc :: [k]) :: [k] where Reverse' '[] acc = acc Reverse' (a : as) acc = Reverse' as (a : acc)