Bonjour, pouvez-vous me dire comment améliorer/corriger/simplifier/, etc., les programmes suivants (écrits en Caml light):

1) Suppression de tous les zéros à la fin d'un vecteur (si le vecteur ne contient que des zéros, en laisser quand même un).

2) Egaliser la longueur de 2 vecteurs en complétant par des zéros à la fin.


1)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
let kill_zeros v =
	let n=vect_length v and p=ref 0 in
	while !p<n & v.(n- !p-1) =0  do p:= !p+1 done;
	if !p=n then [|0|] else
		begin
			let res=make_vect (n- !p) 0 in
				for k=0 to (n- !p-1) do
					res.(k) <- v.(k)
				done;
			res
		end
;;
2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
let mmlong u v=
(*complete u ou v par des zéros à droite pour qu'ils aient la même longueur, et renvoie (u,v) *)
	let aux u1 u2 p q= (* p=vect_length u1, q=vect_length u2, p<q *)
		let res=make_vect q 0 in
			for k=0 to p do
				res.(k)<-u1.(k)
			done;
		(res,u2)
	in
	let m=vect_length u and n=vect_length v in
	if m<n then aux u v m n
	else if m>n then aux v u n m
	else (*m=n*) (u,v)
;;