En Haskell, on peut définir un type de données comme suit :
data Point1 = Point1 {
x :: Integer
, y :: Integer
}
Peut-on utiliser des classes de type pour les variables à l'intérieur d'un type de données ? Si oui, comment ? Je réalise qu'il est possible de faire cela comme un type de données algébrique, avec une définition différente pour chaque type de point, mais je me demande s'il y a un moyen d'accomplir cela d'une manière plus compacte et flexible.
Par exemple, quelque chose comme ceci pseudo-code qui utilise la syntaxe de déclaration de fonction :
data Point2 = Point2 {
x :: (Num a, Ord a) => a
, y :: (Num a, Ord a) => a
}
L'objectif serait de permettre de stocker Int , Entier , Flotteur ou Double dans le type de données. Idéalement, j'aimerais le restreindre de sorte que x et y doivent être du même type.