Word frequency: Difference between revisions

Content added Content deleted
(simplify)
m (→‎{{header|Haskell}}: workaround failing syntax highlighting (doesn't seem to know that ' is a symbol character))
Line 2,456: Line 2,456:
import Control.Category -- (>>>)
import Control.Category -- (>>>)
import Data.Char -- toLower, isSpace
import Data.Char -- toLower, isSpace
import Data.List -- sortBy, (Foldable(foldl')), filter
import Data.List -- sortBy, (Foldable(foldl')), filter -- '
import Data.Ord -- Down
import Data.Ord -- Down
import System.IO -- stdin, ReadMode, openFile, hClose
import System.IO -- stdin, ReadMode, openFile, hClose
Line 2,472: Line 2,472:


frequencies :: Ord a => [a] -> Map a Integer
frequencies :: Ord a => [a] -> Map a Integer
frequencies = foldl' (\m k -> M.insertWith (+) k 1 m) M.empty
frequencies = foldl' (\m k -> M.insertWith (+) k 1 m) M.empty -- '
{-# SPECIALIZE frequencies :: [Text] -> Map Text Integer #-}
{-# SPECIALIZE frequencies :: [Text] -> Map Text Integer #-}


Line 2,509: Line 2,509:
import System.IO (stdin, IOMode(..), openFile, hClose)
import System.IO (stdin, IOMode(..), openFile, hClose)
import System.Environment (getArgs)
import System.Environment (getArgs)
import Data.IORef (IORef(..), newIORef, readIORef, modifyIORef')
import Data.IORef (IORef(..), newIORef, readIORef, modifyIORef') -- '


-- containers
-- containers
Line 2,524: Line 2,524:
where
where
alter Nothing = Just <$> newIORef (1 :: Int)
alter Nothing = Just <$> newIORef (1 :: Int)
alter (Just ref) = modifyIORef' ref (+ 1) >> return (Just ref)
alter (Just ref) = modifyIORef' ref (+ 1) >> return (Just ref) -- '


main :: IO ()
main :: IO ()