Bonjour ,
dans le cadre d'un projet, je dois réaliser un rumnikub en caml.
J'ai un problème , sur l'écriture d'une fonction d'ordre supérieur.
Voici le sujet :
http://www-verimag.imag.fr/~mounier/...jet1516_x2.pdf
J'ai utilisé le typage :
J'ai réalisé la fonction cardinal :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 type e melt = e * int type e mset = e melt list
Et la fonction cardinal d'ordre supérieur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 let rec cardinal (s:'e mset) = match s with | (a,nbocc)::r -> (nbocc+(cardinal r )) | [] -> 0 ;; val cardinal : 'a mset -> int = <fun>
Et j'aurais besoin d'aide pour écrire la fonction subset d'ordre supérieur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 let incr_compteur cpt (_,z) = cpt + z;; let cardinal2 (l :'e mset) = List.fold_left incr_compteur 0 l ;;
Voici ma fonction subset :
Merci pour votre attention,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let rec subset (s1:'e mset) (s2: 'e mset) = match s1 with | (a,nbocc)::r -> if ((nb_occurrences a s2) >= nbocc) then (subset r s2) else false | [] -> true;;
Cordialement,
poupoules
Partager