В 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 должны быть одного типа.