[英]add an instance declaration haskell
這是我的功能:
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
因此,我希望有人可以向我解釋該錯誤的含義以及為解決該問題而必須更改的內容。
編輯通過將最大值更改為最大值,我得到了這個新錯誤:
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
這是什么意思?
假定使用String
調用bestLocByArtiest
則rev
的類型需要為[Review] -> Double
。 但是實際上是[[Review] -> Double] -> [[Review] -> Double]
。 這基本上就是錯誤消息所說的。
因此,要解決此問題,您需要更改bestLocByArtiest
的類型簽名,或者需要修改rev
功能。 這涉及查看max
, gmloc
的類型以及gmloc
的各個元素,以確保它gmloc
您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.