Я пытаюсь реализовать функцию MapReduce
. Я должен сделать это без каких-либо параллелизма, у меня это до сих пор:MapReduce in Haskell
import Data.Map
import Data.Char
map_ list = toList $ fromListWith (+) [(x, 1) | x <- list]
main_ = map_ $ getWords "test.txt" --getting error here
prettyprint [(x, y):xs] = x ++ " : " ++ y -- trying to print out list
-- Loads words from a text file into a list.
getWords :: FilePath -> IO [String]
getWords path = do contents <- readFile path
return ([map toLower x | x <- words contents]) --- Ambiguous occurrence `map'
Основная задача состоит в том, чтобы использовать MapReduce
, чтобы получить список слов из файла и частоты каждого нового слова.
Я не понимаю, как работает сокращение в этом случае. Я просто знаю, что я сопоставляю список с функцией, которая вычисляет частоту слов. Как его можно уменьшить?
Я настоятельно рекомендую вам добавить сигнатуры типов для каждого верхнего уровня определение. Это сделает ваш код частично документированным, а компилятор будет производить более качественные ошибки. – chi