public Tuple(Nuple <T> a, Nuple <T> b, Nuple <T> c, Nuple <T> d) : this(a, new Tuple <T>(b, new Tuple <T>(c, d))) { }
public Tuple(Nuple <T> a, Nuple <T> b, Nuple <T> c, Nuple <T> d, Nuple <T> e) : this(a, new Tuple <T>(b, new Tuple <T>(c, new Tuple <T>(d, e)))) { }
public Tuple(Nuple <T> a, Nuple <T> b) { this.a = a; this.b = b; }
// The constructor determines the number of elements. public Tuple(Nuple <T> a, Nuple <T> b, Nuple <T> c) : this(a, new Tuple <T>(b, c)) { }
public Tuple(Nuple <T> a, Nuple <T> b) : base(a) => this.b = b;
public Tuple1(Nuple <T> a) => this.a = a;
public Tuple(Nuple <T> a, Nuple <T> b, Nuple <T> c) : base(a, new OrderedPair <T>(b, c)) { }
//public static OrderedPair<T> Create<N>(params Nuple<T>[] x) //{ // // Doesn't work. Should return a Tuple, but an OrderedPair isn't a Tuple. // if (typeof(N) == typeof(Two)) // return new OrderedPair<T>(x[0], x[1]); // else if (typeof(N) == typeof(Three)) // return new OrderedPair<T>(x[0], new OrderedPair<T>(x[1], x[2])); // return null; //} //public Tuple(params Nuple<T>[] x) : base( // // Doesn't work. Can't use expressions inside base constructor definition. //// 2 // typeof(N) == typeof(Two) ? // x[0], x[1] : //// 3 // x[0], new OrderedPair<T>(x[1], x[2]) //) //{ //} // Best remaining option, but N (the dependent type) becomes irrelevant public Tuple(Nuple <T> a, Nuple <T> b) : base(a, b) { }
public OrderedPair(Nuple <T> a, Nuple <T> b) { this.a = a; this.b = b; }