Dans ta fonction récursive, tu utilises les éléments comme des couples `int * float`, ce qui est incompatible avec la définition de type que tu donnes. Il faut que tu choisisses soit d'utiliser des couples ainsi, soit d'utiliser le type `couple` que tu as défini.
Pour manipuler un type produit comme le type `couple` que tu as défini, tu peux utiliser
| c :: t -> ... c.place ... c.composante ...
ou bien
| { place = i; composante = v } :: t -> .... i ... v ....
Par ailleurs l'algorithme utilisé est faux, puisque tu prends la racine récursivement: si tu as une liste [(i1,v1); (i2,v2); (i3,v3)] tu vas calculer sqrt(v1^2 + sqrt(v2^2 + sqrt(v^3 + 0))), ce qui est faux.
Partager