可能的重复项:
计算列表中
的唯一元素 计算列表中每个元素的频率
我尝试了Google,Hoogle和这里,没有看到任何明显的东西。
它应该需要['a', 'b', 'e', 'c', 'e', 'a', 'e']
并返回[('a', 2), ('b', 1), ('c', 1), ('e', 3)]
或其他东西。
我会使用地图进行计数:
import qualified Data.Map as M
countElems :: (Ord a) => [a] -> M.Map a Int
countElems = M.fromListWith (+) . flip zip (repeat 1)
No.您可以使用例如
import Data.List
import Control.Arrow
map (head &&& length) $ group $ sort ['a', 'b', 'e', 'c', 'e', 'a', 'e']
或者考虑使用多集。