Question en CAML
Résolu/Fermé
lina_litimein
-
Modifié par lina_litimein le 15/06/2012 à 19:48
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 15 juin 2012 à 20:03
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 15 juin 2012 à 20:03
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
15 juin 2012 à 20:03
15 juin 2012 à 20:03
'a et 'b sont des types abstraits, tu peux mettre n'importe quel type concret à la place, mais dans ce cas tous les 'a seront remplacés par le même type, qui pourra être différent des types de 'b
Exemple simple :
Donc le constructeur make_vect est donné par un int (la taille du vecteur), et une valeur quelconque de type 'a qui initialise le vecteur avec cette valeur, et donne au passage son type au vecteur.
On ne pourra donc pas mélanger les types int vect, string vect, etc.
map_vect est une fonction qui prend en premier paramètre une fonction de transition qui transforme toutes les valeurs de type 'a du vecteur 'a vect, en valeurs de type 'b ce qui donne un 'b vect en résultat.
Exemple (une fonction qui donne la taille de tous les string d'un vecteur)
Exemple simple :
let min x y = (* min : 'a -> 'a -> 'a = <fun> *) if (x<y) then x else y;;
Donc le constructeur make_vect est donné par un int (la taille du vecteur), et une valeur quelconque de type 'a qui initialise le vecteur avec cette valeur, et donne au passage son type au vecteur.
On ne pourra donc pas mélanger les types int vect, string vect, etc.
map_vect est une fonction qui prend en premier paramètre une fonction de transition qui transforme toutes les valeurs de type 'a du vecteur 'a vect, en valeurs de type 'b ce qui donne un 'b vect en résultat.
Exemple (une fonction qui donne la taille de tous les string d'un vecteur)
(* vect_length_string : string vect -> int vect = <fun> *) let vect_length_string = map_vect string_length;;