我有两个功能第一个列表
列表可以是:
['Sunyy','day',etc','etc']
countOccurrences :: [String] -> [(String, Int)]
countOccurrences xs = map (\xs -> (head xs, length xs)) . group . sort $ xs
此函数返回类似[("sunny",1),("etc",2)]
但是我想用我从第一个函数得到的值来调用sortOccurence函数,这样我就可以获得如下值:[("etc",2),("sunny",2)]
sortOccurrences :: [(String, Int)] -> [(String, Int)]
sortOccurrences sort = sortBy (comparing snd) sort
当我执行此函数时,我收到如下错误:
main.hs:13:32: error:
Variable not in scope:
comparing
:: ((a0, b0) -> b0) -> (String, Int) -> (String, Int) -> Ordering
答案 0 :(得分:1)
正如@ReinHenrichs所指出的,这只是一个不从comparing
导入Data.Ord
的情况。您可以通过在文件顶部添加此行来解决此问题:
import Data.Ord (comparing)
通常,当编译器说Variable not in scope (...)
时,这意味着你编写了编译器不知道的东西,并且在某种程度上你必须让它知道你所指的是什么。由于comparing
来自模块Data.Ord
,因此默认情况下不会导入。