Entropy: Difference between revisions

371 bytes added ,  4 years ago
→‎{{header|Haskell}}: Added a variant, expressed in terms of an applicative.
(Added Wren)
(→‎{{header|Haskell}}: Added a variant, expressed in terms of an applicative.)
Line 1,094:
where lg c = -c * logBase 2 c
fq c = let sc = sum c in map (/ sc) c</lang>
 
 
Or, inlining with an applicative expression (turns out to be fractionally faster):
 
<lang haskell>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"</lang>
 
{{out}}
9,659

edits