У меня есть тип
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
?
Это должно быть что-то вроде:
x = [1, 2, 3] :: Integer T5
(мне кажется) Вопрос в том, какой правильный синтаксис после ::
?
Я получаю ошибку
Couldn't match expected type `PolyRing Integer T5'
with actual type `[t0]'
In the expression: [1, 2, 3] :: PolyRing Integer T5
In an equation for `x': x = [1, 2, 3] :: PolyRing Integer T5
Также яищу лучший способ реализовать это.В частности, мне бы очень хотелось, чтобы тип a
выводился из типа элементов списка, в то время как IntegerAsType n
должен быть указан (он не должен зависеть от длины списка, даже если это возможно).
То, что я до сих пор пробовал:
x = [1,2,3] :: PolyRing (Integer, T5)
x = [1,2,3] :: PolyRing Integer T5