这意味着定义cuenta_signo所需的Num [Int]实例是什么意思?

时间:2014-10-23 02:08:11

标签: haskell

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;?

2 个答案:

答案 0 :(得分:3)

l的类型为[Int]。不幸的是,错误消息令人困惑,但这是因为您尝试使用<>将列表与数字(l < 0)进行比较。您可能打算与ab进行比较。

此外,您应该发布完整的错误消息,如下次Code-Apprentice所说。这样可以更容易地弄清楚发生了什么,并且您可能会更快地得到答案。

答案 1 :(得分:1)

小于运算符(<)只能用于比较相似类型。由于l < 00是一个数字(即Num),编译器会抱怨。您无法将单个数字与包含(<)的数字列表进行比较。

您很可能意味着要比较列表中的元素,因此a < 0b > 0可能会得到您想要的内容。请注意,ab代表l列表中Int的个别元素,而不是[Int]