typelevel-rewrite-rules-0.1: src/TypeLevel/Append.hs
{-# LANGUAGE ConstraintKinds, DataKinds, PolyKinds, TypeFamilies, TypeOperators #-}
module TypeLevel.Append where
type family (++) as bs where
'[] ++ bs = bs
(a ': as) ++ bs = a ': (as ++ bs)
type RightIdentity as
= (as ++ '[]) ~ as
type RightAssociative as bs cs
= ((as ++ bs) ++ cs) ~ (as ++ (bs ++ cs))