这是我的功能:
bestLocByArtiest :: String -> [Review] -> Double
bestLocByArtiest art = rev
where gmloc = [gemZaalByArtiest art, gemFestByArtiest art, gemOpenByArtiest art]
rev = max gmloc
这是我得到的错误:
Review.hs:101:24:
Couldn't match type `[Review] -> Double' with `Review'
Expected type: [Review] -> Double
Actual type: [[Review] -> Double] -> [[Review] -> Double]
In the expression: rev
In an equation for `bestLocByArtiest':
bestLocByArtiest art
= rev
where
gmloc = [gemZaalByArtiest art, ....]
rev = max gmloc
所以我希望有人能解释一下这个错误意味着什么以及我必须在我的代码中改变它来解决它。
修改 通过将max更改为最大值,我得到了这个新错误:
Review.hs:103:21:
No instance for (Ord ([Review] -> Double))
arising from a use of `maximum'
Possible fix:
add an instance declaration for (Ord ([Review] -> Double))
In the expression: maximum gmloc
In an equation for `rev': rev = maximum gmloc
In an equation for `bestLocByArtiest':
bestLocByArtiest art
= rev
where
gmloc = [gemZaalByArtiest art, ....]
rev = maximum gmloc
这是什么意思?
答案 0 :(得分:1)
鉴于使用bestLocByArtiest
调用String
,rev
的类型必须为[Review] -> Double
。但实际上它是[[Review] -> Double] -> [[Review] -> Double]
。这基本上就是错误信息所说的内容。
因此,要修复此问题,您需要更改bestLocByArtiest
的类型签名,或者需要修改rev
的内容。这需要查看max
,gmloc
的类型以及gmloc
中的各个元素,以确保它能够满足您的需求。