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.