169 похожих чатов

Ребят. подскажите пожалуйста, 2 часа с этим вожусь никак не

могу понять:

Мне нужно считать количество повторений слов в файле. У меня есть две функции

1)для считывания слов из файла:
getWords :: FilePath -> IO [String]
getWords path = do contents <- readFile path
return $ (words contents)

для получения частоты слов
frequency :: (Ord a) => [a] -> [(a, Int)]
frequency xs = toList (fromListWith (+) [(x, 1) | x <- xs])

Проблема в том, что хаскель вместо [String] возвращает IO [String]
И функция frequency отказывается принимать IO [String] чтобы я туда не подавал

Что мне нужно сделать чтобы она приняла IO [String]? Как я понял, сконвертировать IO [String] в ]String] по-человечески не выйдет, возможно переделать функцию frequency, но как?

еще у меня есть основная функция откуда я вызываю эти две (но она сейчас не работает)

occurs :: FilePath -> [String]
occurs path = do
frequency getWords path

10 ответов

15 просмотров

Я бы советовал понять причину

wordsFrequensyInFile :: FilePath -> IO [(String, Int)] wordsFrequensyInFile path = do words <- getWords path pure (frequency words)

Mogus-Amogus Автор вопроса
Nutritional Rabbit
wordsFrequensyInFile :: FilePath -> IO [(String, I...

нифига оно работает, спасибо

Nutritional Rabbit
wordsFrequensyInFile :: FilePath -> IO [(String, I...

тут же короче без do раза в два, не?

Nutritional Rabbit
и непонятнее

why use many word when few do trick даже я понимаю fmap, а я Haskell-то не знаю

Max Силинг
why use many word when few do trick даже я понимаю...

ты умный, а не обычный студент уника, которому пихают хаскель

потому что return здесь - это не return из других языков. return :: a -> IO a

Fell-x27 (MDS pool | Medusa wallet)
потому что return здесь - это не return из других ...

потому что return надо запретить и заставить использовать pure

Danil Berestov
потому что return надо запретить и заставить испол...

Ды просто надо сначала читать документацию, а потом уже монады монадить, а не надеяться на знания, притянутые из других языков. Это как "ложные друзья переводчика".

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта