Merci à vous 2....En effet ma fonction aurait gagné la palme de la moins élégante... ^^
List.mem je ne connaissais pas....Très utile en effet ^^
Type: Messages; Utilisateur: magodeoz
Merci à vous 2....En effet ma fonction aurait gagné la palme de la moins élégante... ^^
List.mem je ne connaissais pas....Très utile en effet ^^
(*inclus *)
let rec appartient (x : 'e) (e : 'e list) : bool =
match e with |a:: ensemble2 -> if(a = x) then true else appartient (x) (ensemble2)
|[] -> false
;;
let rec...
J'ai à la base:
let rec cardinal (l:'a list) :int=
match l with
|a::b->1+cardinal (b)
|[]->0;;
let rec appartient (x : 'a) (l : 'a list) : bool =
match l with |a::ensemble2 -> if(a...
Oui en effet...Bien plus lisible ;) Je manque encore de pratique en ocaml et j'aime bien marqué le type des arguments de la fonction pour m'y retrouver.Je manque encore d'automatismes ou plutôt j'en...
Bon je vais essayer inclus maintenant....J'appréhende déjà :mouarf:
Débile que je suis....
let rec fold_left (f: 'a -> 'b ->'a) (acc: 'a) (l: 'b list): 'a =
match l with
[] -> acc
| x::xs -> fold_left f (f acc x) xs ;;
let...
Je vais avoir un autre problème.... ^^ cardinalmultiens doit me renvoyer un couple de int.... Donc mon accumulateur va être (0,0)....
Je pense que je n'en suis pas loin...
let rec fold_left (f:...
J'imagine que le début est de la forme:
letcardinalmultiens=List.fold_left (fun a (_,b)-> mais je peine à trouver comment renvoyer la somme des b....
Oui il faudrait que j'ai la somme des "b" :-) J'imagine qu'il faut stocker les valeurs de b dans l'accumulateur n'est ce pas...?
Je vais voir si j'arrive à faire ça...
J'ai tenté :
let cardinalmultiens =List.fold_left (fun _ (a,b) -> b) 0 ;;
List.fold_left (fun _ (a,b) -> b) 0 [(3,1);(2,3)];;
- : int = 3
Mais ça ne marche pas....
Ah merci j'ai compris!!! :-) le a en fait ça va être mon accumulateur!
Si j'avais mis:
let cardinal =fold_left (fun a _ -> succ a) 1 ;;
fold_left (fun a b -> succ a) 1 [5;3;9;4] ;; ça m'aurait...
J'ai un peu de mal encore avec cette fonction.... J'aimerais bien tout comprendre :-)
Quand j'ai:
fold_left (fun a b -> succ a) 0 [5;3;9;4] ;;
Le b, si j'ai bien compris c'est les différentes...
Ok :-)
let rec fold_left (f: 'a -> 'b ->'a) (acc: 'a) (l: 'b list): 'a =
match l with
[] -> acc
| x::xs -> fold_left f (f acc x) xs ;;
let cardinal =fold_left (fun a _ -> succ a) 0...
Merci de ta réponse prgasp
Oula....Si je comprends bien, tu as pris 2 fonctions prédéfinies...
List.fold_left et succ qui donne le nombre suivant..
Mais moi il faut que j'écrive ma fonction...
ça a finalement marché! :-)
J'en avais une de trop à la fin ^^Elle était confondue avec la fin de la fenêtre...Je sais pas si c'est clair mais l'idée c'est ça :lol:
differencemultiens...
Merci pour ces infos, j'ai bien compris à présent :-)
J'ai réussi à mettre toutes les autres fonctions sous la forme liste....sauf une :(
La dernière....
J'ai:
let rec unionmultiens(multie1 :...
Merci beaucoup de ta réponse Ptival! :ccool:
En fait le multivide c'était un ensemble que j'avais défini:
let multivide = VIDE ;;
Et donc pour la version liste:
type 'a multielt = 'a * int...
type multiens= 'a multielt list non?
Voila je vous ai envoyé le sujet en pièce jointe. D'après le professeur, Partie 1 et 2, il n'y a pas d'erreurs dans ce que j'ai fait .J'ai réussi jusqu'au début de la partie 3. J'ai fait...
prgasp, pourrais-tu m'aider pour cette fonction.... Même problème que pour la précèdente, je m'en sors avec le "Add of mais pas sans...
occurencemultiens : 'e multiens -> int
Sémentique : renvoit...
Je crois que la récursion terminale c'est encore un peu trop compliqué pour moi ^^
type 'a multielt = 'a * int
type 'a multiens= []| 'a multiens of 'a multielt ?
Merci pour le lien :-) Je vais...
merci du conseil. :-)
Petite question, à la fac on utilise emacs, est-il possible de l'avoir sur Windows (j'ai cherché partout...rien trouvé) ou n'existe-t-il que sous linux ou unix?
En fait j'ai objectif caml sur mon windows et ce n'est pas très stable...Le programme bug assez souvent...et je n'ai pas vraiment envie de mettre du ubuntu sur mon pc...
Finalement l'exemple a...
Je crois que j'ai trouvé! :D
let rec cardinalmultiens (l: 'a list):int*int=
match l with
|(_,b)::suite -> let (x,y)=cardinalmultiens(suite) in (x+1,b+y)
|[] -> (0,0);;
c'est bon ça...
Merci de ta réponse prgasp.
Ah d'accord C'était ça mon problème redéfinir le type multiens.
type multiens= []|int* 'a list non?
Je pensais pouvoir m'en sortir comme avec cardinal en faisant du...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.