Classes de tipo nos tipos de dados Haskell

Em Haskell, pode-se definir um tipo de dados da seguinte forma:

data Point1 = Point1 {
    x :: Integer
  , y :: Integer
}

Pode-se usar classes de tipo para variáveis ​​dentro de um tipo de dados? Se sim como? Eu percebo que é possível fazer isso como um tipo de dados algébricos, com uma definição diferente para cada tipo de ponto, mas eu estou querendo saber se há uma maneira de conseguir isso de uma maneira mais compacta e flexível.

por exemplo. Algo ao longo das linhas destepseudo-código que usa sintaxe de declaração de função:

data Point2 = Point2 {
    x :: (Num a, Ord a) => a
  , y :: (Num a, Ord a) => a
}

O objetivo seria permitir que um armazenasseInt, Inteiro, Flutuador ouem dobro valores no tipo de dados. Idealmente, gostaria de restringi-lo para que xey devesse ser do mesmo tipo.

questionAnswers(2)

yourAnswerToTheQuestion