我在sumSales
上的模式sumSales store day (company,[(d,sales)]): y
中遇到解析错误。我是Haskell的新手,不知道这个错误可能是什么
sumSales::(Num p,Eq t) => t -> t -> [(t,[(t,p)])] -> p
sumSales store day (company,[(d,sales)]): y
| store == company && day == d = sales + sumSales store day y
| otherwise = getSales day y
答案 0 :(得分:0)
在Haskell中,模式匹配项必须用括号括起来。解析器读取
sumSales store day (company, [(d, sales)]) : y
作为(:)
的定义,而不是sumSales
的定义。然后,这会产生解析错误,因为您不能在运算符的每一侧都放置多个参数,并且此定义似乎在左侧具有四个参数(sumSales
,store
,day
和(company, [(d, sales)])
)。您应该重写为
sumSales store day ((company, [(d, sales)]) : y)
正如OP上的一些注释者所指出的那样,代码还存在许多其他问题,但这至少可以解决解析错误。