Ta solution, bien que résolvant ta problématique, rajoute une indirection en mémoire : tes types sont des pointeurs sur des couples de int
Pas forcément, ça dépend de la manière dont le type est écrit. Si tu écris
type coord = Coord of (int * int)
la représentation sera un constructeur à un argument (i.e. un 'fat pointer') vers une paire d'entiers (soit au total 5 mots mémoire). Si tu écris au contraire
type coord = Coord of int * int
sans les parenthèses, cela sera représenté par un constructeur à deux arguments entiers (soit au total 3 mots mémoire) ce qui est strictement équivalent en mémoire à un terme de type int * int.
[^] # Re: Module et type abstrait
Posté par Perthmâd . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 4.
Pas forcément, ça dépend de la manière dont le type est écrit. Si tu écris
type coord = Coord of (int * int)
la représentation sera un constructeur à un argument (i.e. un 'fat pointer') vers une paire d'entiers (soit au total 5 mots mémoire). Si tu écris au contraire
type coord = Coord of int * int
sans les parenthèses, cela sera représenté par un constructeur à deux arguments entiers (soit au total 3 mots mémoire) ce qui est strictement équivalent en mémoire à un terme de type
int * int.