class Operator2<T, U, V>{ private let f: (T, U) -> V // 2項演算子で初期化できるか試してみる。 init(f:(T, U) -> V){ self.f = f } subscript(arg1: T) -> (U -> V) { get { return { (arg2: U) -> V in return self.f(arg1, arg2) } } } subscript(arg1: T, arg2: U) -> V { get { return f(arg1, arg2) } } }