>>801
ランク2多相をどうエンコードするかという問題(Scalaはランク2多相の言語レベルサポートが無いので)ですよね。
とりあえず、解いて見ました。
まず、加算だけできる型クラスがScalaには標準で無いので定義してやります(Numericは必要なメソッドが多過ぎるので×)

scala> trait AddT[X] { def plus(a: X, b: X): X }
defined trait AddT

型クラスのインスタンスも作ってあげます。

scala> implicit object IntAdd extends AddT[Int] { def plus(a: Int, b: Int) = a + b }
defined module IntAdd

scala> implicit object StringAdd extends AddT[String] { def plus(a: String, b: String) = a + b }
defined module StringAdd