Bonjour à tous,
J'ai quelques soucis en ocaml avec une fonction....
Tout d'abord je dois créer une fonction cardinal et on m'impose:
type 'e ensemble = NIL | Cons of 'e * 'e ensemble;;
let ensemblevide = NIL;;
puis une fonction cardinalmultiens et on m'impose:
type 'e multielt = 'e*int ;;
type 'e multiens = VIDE | Add of 'e multielt * 'e multiens ;;
Donc pour ça pas de problème:
cardinal:
Spécification : cardinal 'e ensemble->int
Sémantique : calcule le nombre d'éléments d'un ensemble
et pour cardinalmultiens:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let rec cardinal (x : 'e ensemble) : int = match x with |Cons (a, ensemble2)->1+cardinal(ensemble2) |ensemblevide -> 0 ;;
Profil :cardinalmultiens :'e multiens -> int * int
Sémentique : calcule le nombre de multi-elements et le nombre d'occurences total
Le problème c'est qu'après on me demande de refaire cela en utilisant la notation usuelle de ocaml pour les listes.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 let rec cardinalmultiens(e : 'e multiens) : int*int = match e with |Add((_,x),suite) -> let (a,b) = cardinalmultiens(suite) in (a+1, x + b) |multivide -> (0,0) ;;
Donc pour cardinal:
Pourriez-vous m'aider pour cardinalmultiens...?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 let rec cardinal (x:'a list) :int= match x with |a::b->1+cardinal (b) |ensemblevide->0;; "
D'avance je vous remercie,
Cordialement,
PRG
Partager