官术网_书友最值得收藏!

Implementing a frequency table using Data.MultiSet

A frequency map of values is often useful to detect outliers. We will use an existing library that does much of the work for us.

Getting ready

We will be using the multiset package from Hackage:

$ cabal install multiset

How to do it...

Create a new file, which we will call Main.hs, and perform the following steps:

  1. We will use the fromList and toOccurList functions from Data.MultiSet:
    import Data.MultiSet (fromList, toOccurList)
  2. Define a simple data type for colors:
    data Color = Red | Green | Blue deriving (Show, Ord, Eq)
  3. Create a list of these colors:
    main :: IO ()
    main = do
      let items = [Red, Green, Green, Blue, Red, Green, Green]
  4. Implement the frequency map and print it out:
      let freq = toOccurList . fromList $ items
      print freq
  5. Run the code to display the frequency list:
    $ runhaskell Main.hs
    
    [ (Red, 2), (Green, 4), (Blue, 1) ]
    

How it works...

The toOccurList :: MultiSet a -> [(a, Int)] function creates a frequency map from a list. We construct MuliSet using the provided fromList function.

See also

If importing a new library is not desired, see the previous recipe on Implementing a frequency map using Data.List.

主站蜘蛛池模板: 淄博市| 无锡市| 宁都县| 个旧市| 女性| 平远县| 德令哈市| 本溪市| 开鲁县| 巴彦县| 海林市| 济阳县| 罗定市| 上杭县| 滦平县| 平邑县| 石城县| 翼城县| 赤壁市| 绥江县| 兰州市| 茌平县| 盱眙县| 郑州市| 望奎县| 甘孜| 吉隆县| 渝北区| 肥城市| 新化县| 平度市| 肥乡县| 高雄县| 丰台区| 弥渡县| 旅游| 大余县| 余姚市| 彭州市| 和林格尔县| 霍州市|