错误:不在范围内:类型变量[Haskell]

错误:不在范围内:类型变量[Haskell],haskell,Haskell,我想要数据类型中的数值列表 数据多项式=多项式{xs::(Num a)=>[a]}派生(Show) 但我还是犯了这个错误 error: Not in scope: type variable ‘a’ 根据 在Haskell 98中,只有函数可以有类型约束 data Polynomial a = Polynomial xs deriving (Show) 为了实现您想要的功能,您可以使用类型参数声明多项式。然后编写具有适当类型约束的函数 data Polynomial a = Poly

我想要数据类型中的数值列表

数据多项式=多项式{xs::(Num a)=>[a]}派生(Show)

但我还是犯了这个错误

error: Not in scope: type variable ‘a’
根据

在Haskell 98中,只有函数可以有类型约束

data Polynomial a = Polynomial xs
    deriving (Show)
为了实现您想要的功能,您可以使用类型参数声明
多项式
。然后编写具有适当类型约束的函数

data Polynomial a = Polynomial xs
    deriving (Show)
这允许您构造具体的多项式类型,例如
多项式Int
多项式Float
或甚至
多项式字符串
。对
多项式
类型进行操作的函数可以声明对类型参数的约束。例如,添加两个多项式的函数可以具有以下签名:

(+) :: (Num a) => Polynomial a -> Polynomial a -> Polynomial a

冲洗并根据需要重复每个功能。

如果您可以访问
语言扩展,您可以执行以下操作:

data Polynomial = forall a. Num a => Polynomial { xs :: [a] }
您还可以使用
独立衍生衍生衍生工具衍生Show:

data Polynomial = forall a. (Show a, Num a) => Polynomial { xs :: [a] }
deriving instance Show Polynomial