У меня есть тип
class IntegerAsType a where
value :: a -> Integer
data T5
instance IntegerAsType T5 where value _ = 5
newtype (Num a, IntegerAsType n) => PolyRing a n = PolyRing [a]
Я искал способ указать конструктор для нового типа.Я понимаю, что может быть только один, но я не понимаю, почему я могу указать, что это такое.
Например, я мог бы захотеть принять только первые три элемента аргумента к значению PolyRing
конструктор.
Я попытался добавить, используя предложение where
в конце объявления newtype, но это не скомпилировалось.
Я также попробовал:
(PolyRing xs) = PolyRing [2, 3, 5, 7]
в качестве примера игрушки.Я думаю, это должно игнорировать аргумент конструктора значений и всегда иметь значение [2,3,5,7]
.Код компилируется, но мой «пользовательский» конструктор не действует.
Можно ли указать конструктор для нового типа?