Вопросы по теме 'conduit'

Бесконечная петля в источнике с каналом
Я решил попробовать разобраться с каналом, и я думал, что у меня все хорошо, но когда я пытаюсь сделать этот простой источник с каналом 4, я получаю бесконечный цикл, и я не понимаю, почему. Это упрощено, исходная версия создавала бы временное имя...
212 просмотров
schedule 28.05.2023

WAI/Warp ResponseSource очистка
Не могу понять, как выполнить очистку, когда HTTP-клиент разрывает соединение (или происходит что-то другое в реальном мире ). Я пытался обернуть свой Source в addCleanup , но он не вызывается. Вот мой минимальный пример бесконечной строки...
237 просмотров
schedule 29.11.2022

Преобразование запроса Haskell WAI в запрос Network.HTTP.Conduit
Я пишу сервер, и мне нужно переслать определенное сообщение запроса. Это сообщение в основном представляет собой сообщение POST (или GET), возможно, содержащее файл размером в несколько мегабайт. Это сообщение перенаправляется на другой сервер,...
201 просмотров
schedule 08.01.2023

Как объединить несколько каналов в один или наоборот
Можно ли объединить несколько каналов в один или наоборот? Я борюсь с реализацией следующих функций. merge :: (Monad m) => [Pipe l i o u m r] -> Pipe [l] [i] [o] m [r] split :: (Monad m) => Pipe [l] [i] [o] m [r] -> [Pipe l i o u m...
1123 просмотров
schedule 09.10.2022

Объединение строк из файлов с отметками времени, полученными из имен файлов
У меня есть каталог, полный файлов дампа CSV, которые мне нужно проанализировать и обработать. Каждое имя файла содержит отметку времени, которую я знаю, как извлечь. Затем мне нужно обработать все строки из дампов, но для каждой строки мне нужно...
147 просмотров
schedule 01.06.2023

Как прочитать содержимое загруженного файла
Я пытаюсь загрузить файл CSV и проанализировать его в таблице, которая в конечном итоге будет сохранена в БД. Я играл с примером загрузки файлов Yesod, но не могу заставить его работать с последней версией Yesod. Я использую Yesod 1.2.5.2 and GHC...
328 просмотров
schedule 12.06.2022

Невозможно восстановить ошибки в Conduit
Я пытаюсь понять, как ловить ошибки, возникающие в каналах. Я полагал, что, применив catchC к каналу, я смогу создать новый канал, который будет работать повторно в случае отказа. В приведенном ниже примере у нас есть источник, который, в...
96 просмотров
schedule 30.03.2023

Haskell Conduit: наличие Sink, возвращающего значение на основе значений из восходящего потока
Я пытался использовать библиотеку Conduit для простого ввода-вывода с использованием файлов, но у меня возникли трудности. У меня есть текстовый файл, содержащий только несколько цифр, таких как 1234 . У меня есть функция, которая читает файл,...
332 просмотров
schedule 14.02.2023

Почему await всегда возвращает Nothing при использовании сетевых каналов?
Я пытаюсь научиться пользоваться проводниками. У меня есть канал, который принимает строки байтов и группирует их в пакеты, представляющие действия, отправляемые на сервер. Затем у меня есть канал, который принимает эти пакеты, обрабатывает их и...
95 просмотров
schedule 14.03.2023

Data.ByteString.Char8 не экспортирует stripSuffix
Я работаю над потоком ByteStrings. Я импортировал ByteString через: import qualified Data.ByteString as B Я могу вызвать любую функцию из библиотеки ByteString, например: reverseBS :: Monad m => Conduit B.ByteString m B.ByteString...
190 просмотров
schedule 26.07.2022

Исключение канала
Я не мог понять, как заставить работать sourceDirectory и catchC . src = (sourceDirectory "/does/not/exist/input.txt" $$ C.print) `catchC` \e -> yield (pack $ "Could not read input file: " ++ show (e :: IOException)) Идея состоит в...
226 просмотров
schedule 22.04.2022

Идиоматическая предварительная выборка в потоковой библиотеке
Я работаю с библиотекой потоковой передачи , но приму ответ, используя каналы или канал. Скажи, что у меня есть import Streaming (Stream, Of) import qualified Streaming.Prelude as S streamChunks :: Int -> Stream (Of Thing) IO ()...
198 просмотров

Решение No instance for с однопроходным каналом
Учитывая следующий код: import Data.Attoparsec.Text import qualified Conduit as C import qualified Data.Conduit.Combinators as CC f :: FilePath -> FilePath -> IO () f infile outfile = runResourceT $ CC.sourceFile infile $$...
133 просмотров
schedule 31.05.2023

какова связь между Haskell FreeT и типом Coroutine
В статье «Конвейеры сопрограмм» в Monad.Reader Issue 19 автор определяет универсальный тип Coroutine : newtype Coroutine f m a = Coroutine { resume :: m (Either (f (Coroutine f m a)) a) } Я заметил, что этот тип очень похож на версию...
513 просмотров

Как преобразовать монады в кондуитный конвейер?
Я пытаюсь скопировать файл с диска в файл в MongoDB GridFS с пакетами Database.MongoDB. main :: IO () main = do pipe <- MDB.connect (host "127.0.0.1") _ <- access pipe master "baseball" run close pipe run :: MDB.Action IO GFS.File run...
94 просмотров
schedule 22.02.2023

Нетривиальный протокол с использованием канала Haskell
Я пытаюсь понять, как реализовать нетривиальный протокол (через TCP) с использованием канала Haskell. Примеры того, что я считаю нетривиальным: Прочитайте некоторые байты заголовка и, если они соответствуют ожидаемому, проигнорируйте их и...
118 просмотров
schedule 12.05.2022