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