[Caml] Listes et changements

Listes et changements [Caml] - Langages fonctionnels - Programmation

Marsh Posté le 17-10-2012 à 18:02:47    

Bonjour a tous,
 
J'ai quelques soucis concernant un exercice de caml.
 
J'ai une liste de ce genre  
 

Code :
  1. let l = [("Hugo", 42.);("Moro",89.);("Zoro",1.)


 
Et je dois ecrire une fonction du type:
 

Code :
  1. string- > string -> (string *'a) list -> (string * 'a) list = <fun>


 
Qui servirait a remplacer le nom d'une personne dans la liste par un autre nom et que ce changement soit classe par ordre alphabétique.
 
J'ai le droit d'utiliser la fonction :

Code :
  1. String.lowercase


 
J'ai fini mon code mais rien ne change dans la liste:
 
 

Code :
  1. let rec change_name ancien_nom nouveau_nom l =
  2. let ancien_nom = String.lowercase ancien_nom and nouveau_nom = String.lowercase nouveau_nom in
  3. match l with
  4.    |[]-> []
  5.     |(m,w)::l when m = ancien_nom -> (nouveau_nom,w)::l
  6.     |(m,w)::l when m > ancien_nom -> (m,w)::l
  7.     |(m,w)::l when m < ancien_nom -> (m,w)::(name ancien_nom nouveau_nom l);;


 
Merci d'avance..


Message édité par rideronix le 17-10-2012 à 19:35:51
Reply

Marsh Posté le 17-10-2012 à 18:02:47   

Reply

Marsh Posté le 17-10-2012 à 20:48:43    

Rhâââ du Caml [:sir_knumskull]  
 
La dernière ligne, j'imagine que c'est plutôt :

Code :
  1. |(m,w)::l when m < ancien_nom -> (m,w)::(change_name ancien_nom nouveau_nom l);;


Ca devrait effectivement changer la valeur du nom mais pour retrier, par contre ... [:gratgrat]  
On part du principe que la liste initiale est elle même triée ?


Message édité par mrbebert le 17-10-2012 à 20:49:01

---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 17-10-2012 à 21:33:59    

J'ai auparavant code la fonction delete (donc pour supprimer)

Code :
  1. let rec delete n l =
  2.   match l with
  3.     | [] -> []
  4.     | (a,b)::l ->
  5.       let x = compare n a in
  6.         if x = 1 then (a,b)::delete n l
  7. else if x = -1 then l
  8. else l ;;

Reply

Marsh Posté le 17-10-2012 à 21:51:21    

Ah ben voila : tu supprimes l'ancien nom et insère le nouveau :D  
 
Sinon, je ne vois pas comment s'en servir [:figti]


---------------
Doucement le matin, pas trop vite le soir.
Reply

Marsh Posté le 19-10-2012 à 01:35:04    

Done. Merci.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed