prefer:
```scala
sealed trait Matrix2[R,C,V] {
  def rowOrd: Ordering[R]
  def colOrd: Ordering[C]
  def +(that: Matrix2[R,C,V])(implicit mon: Monoid[V]): Matrix2[R,C,V]
  def *(that: Matrix2[C,C2,V])(implicit ring: Ring[V]): Matrix2[R,C2,V]
  def toPipe: TypedPipe[(R,C,V)]
}
```scala