Описание тега lazy-io
В Haskell действия lazy-IO возвращают свой результат до того, как IO будет полностью выполнен. Например, getContents возвращает ленивую строку, которая приведет к тому, что файл будет фактически прочитан только при доступе к символам из строки. Так как трудно предсказать, когда IO действительно произойдет, lazy-IO хрупок и должен использоваться с некоторой осторожностью. Популярными детерминированными альтернативами являются трубопровод и трубы.
1
ответ
Философия http-простой setRequestBodyLBS
Я пытаюсь разработать http-клиент с помощью http-simple library. Некоторая реализация библиотеки кажется мне запутанной. Эта библиотека интенсивно использует Conduit; однако есть также эта функция 'setRequestBodyLBS' и, что интересно, здесь отсутств…
16 авг '18 в 13:39
2
ответа
Как мне получить ленивый поток в складку?
Как создать собственный потоковый код? Я генерировал около 1 000 000 000 случайных пар военных колод и хотел, чтобы они лениво текли в складки, но я получил космическую утечку! Вот соответствующий раздел кода: main = do games <- replicateM 100000…
25 авг '14 в 13:33
3
ответа
Переопределение getContents с помощью getChar
На пути к пониманию ленивого ввода-вывода в Хаскеле я попробовал следующее: main = do chars <- getContents consume chars consume :: [Char] -> IO () consume [] = return () consume ('x':_) = consume [] consume (c : rest) = do putChar c consume r…
03 дек '16 в 17:53
2
ответа
Предотвращение ошибки "getCurrentDirectory: ресурс исчерпан (слишком много открытых файлов)"
Я пытаюсь запустить Parsec синтаксический анализатор целой пачки небольших файлов, и появляется сообщение об ошибке, говорящее о том, что у меня слишком много открытых файлов. Я понимаю, что мне нужно использовать строгий ввод-вывод, но я не уверен,…
06 апр '14 в 11:08
2
ответа
Чтение файлов со ссылками на другие файлы в haskell
Я пытаюсь расширить обычную уценку с возможностью иметь ссылки на другие файлы, так что содержимое в ссылочных файлах отображается в соответствующих местах в "главном" файле. Но самое дальнее, что я пришел, это реализовать createF :: FTree -> IO …
24 июн '14 в 16:53
0
ответов
Эффективно добавить завершающий символ новой строки в JSON ByteString, испускаемый Aeson при записи в файл
По умолчанию Aeson encode или же encodePretty не добавляйте завершающий символ новой строки в ByteString, Т.е. при просмотре результирующего файла в vim я вижу [noeol] индикатор. Что такое эффективный / идиоматический способ добавления новой строки …
17 апр '16 в 21:17
1
ответ
Как hGetContents достигает эффективности памяти?
Я хочу добавить Haskell к своему набору инструментов, так что я пробираюсь через Real World Haskell. В главе "Вход и выход", в разделе hGetContentsЯ наткнулся на этот пример: import System.IO import Data.Char(toUpper) main :: IO () main = do inh <…
17 окт '13 в 07:14
1
ответ
Ошибка чтения и записи одного и того же файла одновременно в Haskell
Мне нужно изменить файл на месте. Поэтому я планировал прочитать содержимое файла, обработать его, а затем записать вывод в тот же файл: main = do input <- readFile "file.txt" let output = (map toUpper input) -- putStrLn $ show $ length output wr…
27 окт '12 в 05:29
1
ответ
`взаимодействовать`, используя текст вместо строки
Я хотел бы переписать interact функция, но с использованием Text вместо String, Можно ли использовать Data.Text и / или Data.Text.Lazy выполнить то же поведение, что и interact? Например, когда я запускаю эту программу, используя String: main = inte…
13 авг '12 в 21:24
1
ответ
http-проводник, оснастка и ленивый IO
У меня есть два http-сервера, работающие с JSON API, используя фреймворк Snap мой первый прототип содержит обработчик, похожий на этот пример обработчика import Data.ByteString (ByteString) import Data.ByteString.Char8 as B (unwords, putStrLn) impor…
14 окт '15 в 09:14
1
ответ
Почему gnuplot plot не получает полный stdin от getContents?
У меня проблема с ленивым IO, но я не знаю, как это исправить.У меня есть три небольшие тестовые программы, но V2 - это то, что я действительно хочу.Где-то кажется, что либо getContents рано останавливается, либо gnuplot заканчивает писать рано. Сут…
04 мар '15 в 11:08
0
ответов
Записать JSON в файл как ленивый ByteString непосредственно из выходных данных кодирования Aeson без преобразования в строку
В настоящее время я использую что-то вроде этого для написания контента JSON (my_json) в файл (my_output_filepath): import Data.Aeson.Encode.Pretty import qualified Data.ByteString.Lazy.UTF8 as U writeFile my_output_filepath $ U.toString $ encodePre…
17 апр '16 в 03:49
2
ответа
Ленивый выход из монадического действия
У меня есть следующий монадный трансформатор: newtype Pdf' m a = Pdf' { unPdf' :: StateT St (Iteratee ByteString m) a } type Pdf m = ErrorT String (Pdf' m) В основном, он использует основные Iteratee который читает и обрабатывает PDF-документ (требу…
03 июн '12 в 13:46
2
ответа
Haskell ленивый Bytestring слова не ленивый?
У меня есть следующая программа на Haskell для вычисления подстроки максимальной суммы строки целых чисел: {-# LANGUAGE BangPatterns #-} {-# OPTIONS_GHC -O2 #-} import Data.Functor import Data.Maybe import Data.ByteString.Lazy.Char8 (getContents,lin…
02 сен '13 в 10:26
1
ответ
Что вызвало ошибку "отложенное чтение по закрытому дескриптору"?
Я только что установил GHC из последних источников, и теперь моя программа выдает мне сообщение об ошибке "отложенное чтение по закрытому дескриптору". Что это значит?
15 ноя '14 в 18:44
1
ответ
Почему печать не заставляет всю ленивую ценность IO?
Я использую учебник http-клиента, чтобы получить тело ответа, используя соединение TLS. Так как я могу наблюдать, что print называется withResponseпочему не print заставить весь ответ на вывод в следующем фрагменте? withResponse request manager $ \r…
05 янв '17 в 00:02
2
ответа
Принудительная оценка на ленивом IO
Моя программа читает строку из сетевого сокета и записывает ее на диск. Поскольку строки могут быть очень длинными, а строки имели ужасную производительность, я начал использовать ленивые байтовые строки. Теперь кажется, что Haskell пройдет мимо hCl…
31 мар '12 в 22:16
4
ответа
Haskell: сокрытие сбоев в ленивом IO
Это нубский вопрос. Я хотел бы написать функцию, которая обеспечивает ленивый поток изображений, предположительно что-то вроде: imageStream :: [IO Image] К сожалению, функция, которая читает изображения, может потерпеть неудачу, поэтому она выглядит…
01 ноя '13 в 20:54