functor (M : MatrixSig->
  sig
    type ('a, 'b) op_t2 = ('a, 'b) M.t
    val ( *@ ) : ('a, 'b) M.t -> ('a, 'b) M.t -> ('a, 'b) M.t
  end