- Haskell Data Analysis Cookbook
- Nishant Shukla
- 205字
- 2021-12-08 12:43:36
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:
- We will use the
fromList
andtoOccurList
functions fromData.MultiSet
:import Data.MultiSet (fromList, toOccurList)
- Define a simple data type for colors:
data Color = Red | Green | Blue deriving (Show, Ord, Eq)
- Create a list of these colors:
main :: IO () main = do let items = [Red, Green, Green, Blue, Red, Green, Green]
- Implement the frequency map and print it out:
let freq = toOccurList . fromList $ items print freq
- 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.