Inscription / Connexion Nouveau Sujet
Niveau logiciels
Partager :

type caml

Posté par
kerzu
29-04-11 à 12:41

bonjour, voila j'ai une petite question concernant mon programme sous caml

let echange t d = let n = vect_length t in
for d=0 to n-4 do
for c=d+1 to n-3 do
for b=c+1 to n-2 do
for a= b+1 to n-1 do
if t.(b)>t.(d) & t.(d) > t.(a) & t.(a) > t.(c) then true else false;
done;
done;
done;
done;;

cependant caml me renvoie " this expression has type bool but is used with the type unit"

donc comment resoudre mon probleme de type?

merci, d'avance.

kerzu

Posté par
Porcepic
re : type caml 29-04-11 à 18:25

Bonsoir,

Essaye de traduire ce que tu fais...

« Do », c'est « faire »... autrement dit on sent bien que Caml attend à recevoir après des actions à faire (par exemple, afficher des choses, affecter des variables, en particulier des ref, etc.)
Donc on ne peut pas mettre dedans une valeur à retourner (en l'occurrence ici un booléen).

Une autre question (essentielle) à se poser est : que doit faire ton programme ? Que doit-il retourner ?
Parce que ça semble quand même un peu moche... Et il y a des détails étranges : à quoi ça sert le d que tu prends en argument ?

Autre détail sinon : écrire « if t.(b)>t.(d) & t.(d) > t.(a) & t.(a) > t.(c) then true else false » est un peu lourd.
Ton if teste déjà si la condition est vraie, en renvoyant true si c'est le cas et false sinon.
Autrement dit, il suffit de retourner la valeur du booléen t.(b)>t.(d) & t.(d) > t.(a) & t.(a) > t.(c)... du moins une fois que tu seras sûr qu'il faut bien retourner ça.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !