Clases de tipo en los tipos de datos de Haskell
En Haskell, uno puede definir un tipo de datos así:
data Point1 = Point1 {
x :: Integer
, y :: Integer
}
¿Se pueden usar clases de tipo para variables dentro de un tipo de datos? ¿Si es así, cómo? Me doy cuenta de que es posible hacer esto como un tipo de datos algebraico, con una definición diferente para cada tipo de punto, pero me pregunto si hay una manera de lograr esto de una manera más compacta y flexible.
p.ej. Algo a lo largo de las líneas de estepseudocódigo que utiliza la sintaxis de declaración de función:
data Point2 = Point2 {
x :: (Num a, Ord a) => a
, y :: (Num a, Ord a) => a
}
El objetivo sería permitir a uno almacenarEn t, Entero, Flotador oDoble Valores en el tipo de datos. Idealmente, me gustaría restringirlo para que xey sean del mismo tipo.