我是Haskell的新手,我只是想编写一个列表理解来计算列表中每个不同值的频率,但是我在最后一部分遇到了麻烦.
到目前为止我有这个:
frequency :: Eq a => [a] -> [(Int,a)]
frequency list = [(count y list,y) | y <- rmdups ]
Run Code Online (Sandbox Code Playgroud)
涉及rmdups的最后一部分有问题.
count函数接受一个字符,然后是一个字符列表,并告诉你该字符出现的频率,代码如下.
count :: Eq a => a -> [a] -> Int
count x [] = 0
count x (y:ys) | x==y = 1+(count x ys)
| otherwise = count x ys
Run Code Online (Sandbox Code Playgroud)
先感谢您.
可能重复:
计算列表中的唯一元素计算列表
中每个元素的频率
我试过Google,Hoogle和这里并没有看到任何明显的东西.
它应该采取['a', 'b', 'e', 'c', 'e', 'a', 'e']和返回[('a', 2), ('b', 1), ('c', 1), ('e', 3)]或相应的东西.