В Haskell можно определить тип данных следующим образом:
data Point1 = Point1 {
x :: Integer
, y :: Integer
}
Можно ли использовать классы типов для переменных внутри типа данных? Если да, то как? Я понимаю, что можно сделать это как алгебраический тип данных с различным определением для каждого типа точки, но мне интересно, есть ли способ сделать это более компактным и гибким способом.
например Что-то вроде этого псевдокода, в котором используется синтаксис объявления функции:
data Point2 = Point2 {
x :: (Num a, Ord a) => a
, y :: (Num a, Ord a) => a
}
Цель состоит в том, чтобы разрешить хранить значения Int, Integer, Float или Double в типе данных. В идеале я хотел бы ограничить его так, чтобы x и y были одного типа.