{-# LANGUAGE TypeFamilies #-} module Data.Packed.Utils ((:++:)) where -- | Type operator to concat lists of types type family a :++: b where '[] :++: xs = xs (x ': xs) :++: r = x ': (xs :++: r) -- class -- (:++:) (xs :: [Type]) (ys :: [Type]) (zs :: [Type]) -- | zs ys -> xs -- , zs xs -> ys -- -- instance (ys ~ zs) => (:++:) '[] ys zs -- -- instance ((:++:) xs ys zs) => (:++:) (x : xs) ys (x : zs)