Size: a a a

2021 January 15

AP

Aleksei (astynax) Pi... in Haskell Start
Завязываться на n не нужно почти никогда
источник

DB

Danil Braun in Haskell Start
Да, вот такое я видел в примерах решений.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Aleksei (astynax) Pirogov
Завязываться на n не нужно почти никогда
Это делается для языков, которые построчно читают ввод. Таковым проще знать заранее, что читать
источник

DB

Danil Braun in Haskell Start
А как interact читает ввод?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
На тип посмотрите
источник

AP

Aleksei (astynax) Pi... in Haskell Start
interact :: (String -> String) -> IO ()
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Читает, лениво, результат сразу пишет, но тоже лениво
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Можно написать interact (map toUpper) и хоть гигабайты пайпать
источник

DB

Danil Braun in Haskell Start
Aleksei (astynax) Pirogov
interact (solve . tail . lines) тоже норм, если не хочется IO в процессе решения использовать
interact    ::  (String -> String) -> IO ()

> если не хочется IO

А как оно здесь не используется?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Нельзя "не использовать IO" совсем.
источник

DB

Danil Braun in Haskell Start
Ну вот я и спрашиваю, что значит «не использует»
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Первый аргумент у interact — чистая функция
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Т.е. весь процессинг производится без ручного выполнения IO эффектов
источник

AP

Aleksei (astynax) Pi... in Haskell Start
interact позволяет отделить чистый код от грязного максимально рано
источник

AP

Aleksei (astynax) Pi... in Haskell Start
main = interact f
всё, дальше в f никакого IO, одни чистые функции
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Я не совсем понимаю, к чему этот вопрос был? Подразумевалось "как в этом вашем хаскеле вообще что-то с вводом выводом делается, если у вас чистое ФП"?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Ну так у нас в хаскеле есть средства отделить чистое от нечистого и контролировать с помощью типов это разделение. Никакого "без IO" нет
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Любая программа делает какое-то IO. В той части, где ей позволено IO делать. Программист волен хоть вообще всё делать в IO с присваиванием и прочими прелестями процедурщины. А может и наоборот сделать — с помощью средств вроде interact максимально рано уйти от кода с побочными эффектами и большую часть программы написать "чисто"
источник

IB

Ilya Baryshnikov in Haskell Start
Danil Braun
Кто-нибудь использовал haskell на программистских контестах (школьных)? Как делаете I/O?
Ты уверен, что он будет у тебя на регионе? Или теперь это не очно проходит?
источник

DB

Danil Braun in Haskell Start
>к чему этот вопрос был?

Ну вот хочется, допустим, узнать, как считать несколько строчек из stdin. Путём гуглежа можно обнаружить getLine, getContents, interact, forM_. Вы вот ещё про hReadFile сказали.

>Никакого "без IO" нет

Ну вот это

>если не хочется IO в процессе решения использовать

неоднозначно можно прочитать.
источник