有什么办法可以解决我遇到的此解析错误

时间:2020-09-17 21:50:32

标签: haskell

我在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

1 个答案:

答案 0 :(得分:0)

在Haskell中,模式匹配项必须用括号括起来。解析器读取

sumSales store day (company, [(d, sales)]) : y

作为(:)的定义,而不是sumSales的定义。然后,这会产生解析错误,因为您不能在运算符的每一侧都放置多个参数,并且此定义似乎在左侧具有四个参数(sumSalesstoreday(company, [(d, sales)]))。您应该重写为

sumSales store day ((company, [(d, sales)]) : y)

正如OP上的一些注释者所指出的那样,代码还存在许多其他问题,但这至少可以解决解析错误。