Wpisz klasy w typach danych Haskell

W Haskell można zdefiniować typ danych w taki sposób:

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

Czy można używać klas typu dla zmiennych wewnątrz typu danych? Jeśli tak to jak? Zdaję sobie sprawę, że można to zrobić jako typ danych algebraicznych, z inną definicją dla każdego rodzaju punktu, ale zastanawiam się, czy istnieje sposób na osiągnięcie tego w bardziej zwarty i elastyczny sposób.

na przykład Coś w tym stylupseudo kod który używa składni deklaracji funkcji:

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

Celem byłoby zezwolenie na przechowywanieInt, Liczba całkowita, Pływak lubPodwójnie wartości w typie danych. W idealnej sytuacji chciałbym ją ograniczyć, aby x i y były tego samego typu.

questionAnswers(2)

yourAnswerToTheQuestion