Bonjour,
je suis débutante en Ocaml,
et je me demande s'il ya une différence entre les 2 facons de créer des Types en Ocaml:
type mon_type{a:int; b:int}
et
type mon_type=a of int|b of int
merci bcp en avance
Dans le premier cas la donnée est un couple d'entiers, l'un avec le label a et l'autre avec le label b.
Dans le second cas il n'y a qu'un seul entier, soit avec le constructeur a, soit avec le constructeur b.
Donc ce n'est pas du tout le même type.
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou
very Le 27/11/2009 à 14:04 ( en gros le premier est un *et* (on enregistre une valeur a de type int et une valeur b de type int ) alors que le second est un *ou* (on a soit une valeur "de constructeur" a de type int, soit une valeur de constructeur b de type int )
Pour comprendre l'utilité on peut prendre un exemple du genre:
type point{x:int; b:int} qui va être le type des points entiers dans le plan avec ses coordonnées.
Et par exemple:
type humain = male of int | femelle of int
et donc un humain sera soit un mâle de tel âge soit une femelle de tel âge. Quand on a une donnée de type humain enregistrée, on peut faire un pattern-matching pour savoir si c'est un mec ou une fille et extraire l'âge en même temps.
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard
La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.
merci,
maintenant je comprends la différence entre les 2 définitions des types