[英]Type Declaration For List of Num
我是Haskell的新手,我不知道自己在做什么错。 以下代码生成错误。
numOfPos :: Num a => [a] -> Int
numOfPos xs = length [x | x <- xs, x > 0]
该代码仅返回列表中正数的数量。 该列表可以包含任何类型的数字。
错误显示“无法从上下文(数字a)中推断出使用'<”引起的(Ord a)...”
应该允许该功能的类型声明是什么?
(>)
是在Ord
类型类上定义的 ,而不是在Num
类型类上定义的,因此您需要同时将Num
和Ord
约束都放在a
才能使其起作用:
numOfPos :: (Num a, Ord a) => [a] -> Int
numOfPos xs = length [x | x <- xs, x > 0]
有关为何Num
(“数字”)元素不是Ord
(“有序对象”)元素的更多信息,请参见此问题 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.