Sha256: 16907838dfcddbb4bcc04137cbaf62ec06329b07c4bcfffef842600cfd661940

Contents?: true

Size: 913 Bytes

Versions: 277

Compression:

Stored size: 913 Bytes

Contents

module WordCount
  ( wordCount
  ) where

import Prelude
import Data.Array (foldl)
import Data.Maybe (Maybe(Just), maybe)
import Data.StrMap (StrMap, alter, empty)
import Data.String (Pattern(..), split, toLower, trim)
import Data.String.Regex (replace)
import Data.String.Regex.Flags (global)
import Data.String.Regex.Unsafe (unsafeRegex)

prepare :: String -> Array String
prepare = whitePunc
          >>> remQuot
          >>> aggWhite
          >>> trim
          >>> toLower
          >>> split (Pattern " ")
  where whitePunc = replace (unsafeRegex "[,\n:!&@$%^&.]" global) " "
        remQuot = replace (unsafeRegex "'(\\w+)'" global) "$1"
        aggWhite = replace (unsafeRegex " +" global) " "

freq :: Array String -> StrMap Int
freq = foldl mupd empty
  where mupd acc word = alter cupd word acc
        cupd = maybe 1 ((+) 1) >>> Just

wordCount :: String -> StrMap Int
wordCount = prepare >>> freq

Version data entries

277 entries across 277 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.179 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.178 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.177 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.176 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.175 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.174 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.173 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.172 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.171 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.170 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.169 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.167 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.166 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.165 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.164 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.163 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.162 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.161 tracks/purescript/exercises/word-count/examples/src/WordCount.purs
trackler-2.2.1.160 tracks/purescript/exercises/word-count/examples/src/WordCount.purs