cuenta_signo::[Int]->(Int,Int)
cuenta_signo l= ((length [a | a <- l, l < 0]), (length [b | b <- l, l > 0] ))
为什么我会收到错误&#34;定义cuenta_signo所需的Num [Int]实例&#34;?
答案 0 :(得分:3)
l
的类型为[Int]
。不幸的是,错误消息令人困惑,但这是因为您尝试使用<
和>
将列表与数字(l < 0
)进行比较。您可能打算与a
和b
进行比较。
此外,您应该发布完整的错误消息,如下次Code-Apprentice所说。这样可以更容易地弄清楚发生了什么,并且您可能会更快地得到答案。
答案 1 :(得分:1)
小于运算符(<)
只能用于比较相似类型。由于l < 0
和0
是一个数字(即Num
),编译器会抱怨。您无法将单个数字与包含(<)
的数字列表进行比较。
您很可能意味着要比较列表中的元素,因此a < 0
和b > 0
可能会得到您想要的内容。请注意,a
和b
代表l
列表中Int
的个别元素,而不是[Int]
。