-1

可能重复:
计算列表中的唯一元素 计算列表
中每个元素的频率

我试过谷歌、Hoogle 和这里​​,但没有看到任何明显的东西。

它应该采取['a', 'b', 'e', 'c', 'e', 'a', 'e']并返回[('a', 2), ('b', 1), ('c', 1), ('e', 3)]或类似的东西。

4

2 回答 2

6

我会使用地图进行计数:

import qualified Data.Map as M

countElems :: (Ord a) => [a] -> M.Map a Int
countElems = M.fromListWith (+) . flip zip (repeat 1)
于 2012-12-07T08:13:27.130 回答
2

不,您可以使用例如

import Data.List
import Control.Arrow

map (head &&& length) $ group $ sort ['a', 'b', 'e', 'c', 'e', 'a', 'e']

或者考虑使用MultiSet

于 2012-12-07T07:50:34.437 回答