|
import Data.List (genericLength, group, sort)
|
|
|
|
entropy
|
|
:: (Ord a, Floating c)
|
|
=> [a] -> c
|
|
entropy =
|
|
sum .
|
|
map (negate . ((*) <*> logBase 2)) .
|
|
(map =<< flip (/) . sum) . map genericLength . group . sort
|
|
|
|
main :: IO ()
|
|
main = print $ entropy "1223334444"
|