As an alternative, could we use a tuple of types for Self? I.e., allow `trait Add<LHS, RHS, SUM>: (LHS, RHS)` (or something to bound `Self` to tuples) and `impl Add<int, int, int> for (int, int)`, etc. I'm sure we can do better than this rather verbose first attempt.

I guess this is just an alternate syntax in the end. I would prefer to use an existing language feature than add a new keyword (well, use an existing keyword in a new way). Also I find the use of `in` here confusing since it is not directly related to the usual meaning of input/output parameters on regular (not type) parameters. E.g, I could have a function which maps `T -> T` where a type parameter is the type of both input and output parameters (assuming the second use of `T` is an out param, not a return type).