Haskell, type system, type extension, type, kind, subkinding