What about append
(List a m) -> (List a n) -> (List a (m+n))
What is (m + n) ?
Its not an application of a type constructor
Its an application of a type-function
How is it defined
How is append type checked?