CAML

Modérateur : Michel Quercia

Répondre
MisterReilous
Messages : 2
Enregistré le : mar. août 08, 2017 9:29 pm
Classe : 921

CAML

Message par MisterReilous » sam. août 12, 2017 7:45 pm

Bonjour,
Je fait du caml en vacances et je me demandais pourquoi la fonction "defile" suivante :


type 'a file_FIFO = { contenu: 'a vect; taille: int ;mutable nombre: int; mutable tete: int};;

let defile file = file.contenu.(file.tete) ; if file.nombre = 0 then failwith "File vide" else if file.tete = file.taille - 1 then file.tete <- 0 else file.tete <- file.tete + 1;;


était du type 'a file_FIFO' -> unit () et ne renvoi pas de valeur associée à "file.contenu.(file.tete)"

Et si possible, si quelqu'un pouvait m'indiquer comment faire les deux à la fois dans la même fonction

Merci d'avance

Avatar du membre
JustSayin'
Messages : 805
Enregistré le : mer. août 12, 2015 12:56 pm
Classe : Américaine

Re: CAML

Message par JustSayin' » sam. août 12, 2017 8:08 pm

MisterReilous a écrit :
sam. août 12, 2017 7:45 pm
Bonjour,
Je fait du caml en vacances et je me demandais pourquoi la fonction "defile" suivante :


type 'a file_FIFO = { contenu: 'a vect; taille: int ;mutable nombre: int; mutable tete: int};;

let defile file = file.contenu.(file.tete) ; if file.nombre = 0 then failwith "File vide" else if file.tete = file.taille - 1 then file.tete <- 0 else file.tete <- file.tete + 1;;


était du type 'a file_FIFO' -> unit () et ne renvoi pas de valeur associée à "file.contenu.(file.tete)"

Et si possible, si quelqu'un pouvait m'indiquer comment faire les deux à la fois dans la même fonction

Merci d'avance
Oula

Une fonction Caml renvoie au plus une valeur à la fin de son exécution.

Dans tes if, else if tu ne renvoie rien donc ta fonction est de type unit.
Quand une femme change d'homme elle change de coiffure

Quentin Fortier
Messages : 8
Enregistré le : jeu. juil. 27, 2017 1:37 pm
Contact :

Re: CAML

Message par Quentin Fortier » dim. août 13, 2017 12:39 pm

Tu pourrais donc écrire quelque chose du genre:
let defile file =
let res = file.contenu.(file.tete) in
if file.nombre = 0 then failwith "File vide"
else if file.tete = file.taille - 1 then file.tete <- 0 else file.tete <- file.tete + 1;
res;;
Professeur d'informatique en CPGE
http://quentinfortier.fr/

MisterReilous
Messages : 2
Enregistré le : mar. août 08, 2017 9:29 pm
Classe : 921

Re: CAML

Message par MisterReilous » jeu. août 17, 2017 10:11 am

Merci pour l'éclairement

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités