复合类型(类型构造器)的基本功能由复合类型的主类型确定;
复合类型的扩展功能由主类型和参量类型共同确定;
函数式编程的功能扩展由高阶函数和混入函数完成
public struct Array<Element>
{
public func map<T>(_ transform: (Element) throws -> T) rethrows -> [T]
}
它的类型约束由函数泛型和类型泛型的形式完成