(* Multiplication de matrices *) let n=5;; let a=make_matrix n n 1;; let b=make_matrix n n 1;; let mulmat x y=let z=make_matrix n n 0 in for ligne=0 to (n-1) do for colonne = 0 to (n-1) do for k=0 to (n-1) do z.(colonne).(ligne)<-z.(colonne).(ligne)+ x.(colonne).(k) * y.(k).(colonne) done done done; z;; #infix "mul";; let compte_mul=ref 0;; let prefix mul u v = begin incr (compte_mul); u*v end;; (* la fonction qui suit est déduite de la précédente par un Find&Replace dans lequel "*" est remplacée par " mul "*) let compte_mulmat x y=let z=make_matrix n n 0 in for ligne=0 to (n-1) do for colonne = 0 to (n-1) do for k=0 to (n-1) do z.(colonne).(ligne)<-z.(colonne).(ligne)+ x.(colonne).(k) mul y.(k).(colonne) done done done; z;; compte_mulmat a b;; !compte_mul;;