-- type instance Cons a = type instance Head = a type instance Tail = type instance Init = type instance Last = type instance Length = instance HasHead' a where head' = a instance HasTail' where tail' = instance HasInit' where init' = instance HasLast' where last' = instance HasCons' a where cons' a = instance HasUncons' a where uncons' = (a, ) instance HasHead instance HasTail instance HasInit instance HasLast instance HasCons a instance HasUncons instance HasLength {-# COMPLETE Cons' :: #-} {-# COMPLETE Cons :: #-} type instance Reverse = instance HasReverse' where reverse' = instance HasReverse ---- has-at