mirror of
https://github.com/correl/elm.git
synced 2024-12-18 19:21:37 +00:00
24 lines
490 B
Text
24 lines
490 B
Text
module WordCount (..) where
|
|
|
|
import String
|
|
import Dict exposing (Dict)
|
|
import Regex
|
|
|
|
|
|
wordCount : String -> Dict String Int
|
|
wordCount sentence =
|
|
sentence
|
|
|> String.toLower
|
|
|> depunctuate
|
|
|> String.words
|
|
|> List.foldl (\w d -> Dict.update w incrMaybe d) Dict.empty
|
|
|
|
|
|
depunctuate : String -> String
|
|
depunctuate =
|
|
Regex.replace Regex.All (Regex.regex "[^a-z0-9 ]") (\_ -> "")
|
|
|
|
|
|
incrMaybe : Maybe Int -> Maybe Int
|
|
incrMaybe maybe =
|
|
(Maybe.withDefault 0 maybe) + 1 |> Just
|