Avatar
他にも写像型を protocol 化しようとして,合成演算 ∘ が protocol レベルで宣言できずに困ったこともありました. public struct Map<X: SetType, Y: SetType>: MapType { public typealias Domain = X public typealias Codomain = Y private let f: (X) -> Y public init(_ f: @escaping (X) -> Y) { self.f = f } public static func ∘<W>(g: Map<X, Y>, f: Map<W, X>) -> Map<W, Y> { g.composed(with: f) } } (edited)