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

Как я могу превратить раковину в проводник?
Я пытаюсь написать Conduit , используя синтаксический анализатор attoparsec . В частности, учитывая parseOne :: Parser T , я хотел бы создать Conduit ByteString m T , который многократно применяет синтаксический анализатор к входным данным и...
679 просмотров
schedule 24.09.2022

Поднимите функцию в Conduit Sink
У меня есть функция f :: ByteString -> String , и мне нужен Sink ByteString (ResourceT IO) . Как мне это получить? К сожалению, документы не очень помогли...
449 просмотров
schedule 17.09.2023

Attoparsec: Пропустить термины в квадратных скобках?
Я пытаюсь сделать большие файлы TSV с JSON в 5-м столбце, подходящие для импорта в mongoDB. В частности, я хочу изменить верхний уровень и только ключевые поля верхнего уровня на _id. Это то, что у меня есть до сих пор, кажется, работает, но...
357 просмотров
schedule 28.05.2023

Haskell: вопросы обратного вызова сетевого канала
Я использую network-conduit и runTCPServer для питания моего застрявшего сервера. В таком случае: -- | Helper which represents a conduit chain for each client connection serverApp :: Application SessionIO serverApp appdata = do -- blah blah...
222 просмотров
schedule 04.02.2023

Как читать разные куски из канала (например, строку до LF, а затем 10 байт)?
Для одного сетевого протокола мне нужно иметь возможность гибко считывать различные типы фрагментов из файла Source m ByteString . Есть комбинатор lines , который разбивает ввод на строки, но мне нужно иметь возможность комбинировать строки чтения...
250 просмотров
schedule 21.09.2022

Как правильно обрабатывать все возможные ошибки при использовании канала HTTP?
У меня есть код, который выглядит так: retryOnTimeout :: IO a -> IO a retryOnTimeout action = catch action $ \ResponseTimeout -> do putStrLn "Timed out. Trying again." threadDelay...
360 просмотров
schedule 26.10.2022

Сворачивание подмножества потока с использованием каналов 4.0
Я пытаюсь понять каналы 4.0 и хочу преобразовать код канала. Предположим, у меня есть поток Int s, и я хотел бы пропустить первые пять, а затем получить сумму следующих 5. Используя простые списки, это будет: sum . take 5 . drop 5 В...
578 просмотров
schedule 21.04.2022

Word8 — перевод кодировки ByteString в Conduit
Я пытаюсь заставить клиент telnet работать как побочный проект, и я увидел этот суть как базовый пример. Однако когда я компилирую и запускаю его в ghci, вы видите, что кодировки искажаются. Вот отсылка к персонажам: ���� ��#��' Я...
68 просмотров

Какие трубы / трубопровод пытаются решить
Я видел, как люди рекомендовали библиотеку pipe/conduit для различных задач, связанных с ленивым вводом-выводом. Какую проблему решают эти библиотеки? Кроме того, когда я пытаюсь использовать некоторые библиотеки, связанные с хакерством, весьма...
6281 просмотров
schedule 08.11.2023

Как я могу получить значение после запуска канала?
Мне нужно немного походить туда-сюда между клиентом и получить либо объект Client, либо его строку имени, прежде чем запускать больше конвейеров. Но я не могу заставить appSink дать мне возвращаемое значение. Как мне это сделать?...
127 просмотров
schedule 30.03.2023

Как я могу условно применить проводник?
У меня есть Conduit типа Conduit a m a и функция типа (a -> Maybe a) . Я хочу запустить функцию, а затем, если она ничего не возвращает, использовать Conduit. То есть я хочу функцию типа maybePipe :: Conduit a m b -> (a -> Maybe b)...
166 просмотров
schedule 04.09.2023

Преобразование обычного кода синтаксического анализатора attoparsec в код на основе канала/канала
Я написал следующий код синтаксического анализа, используя attoparsec : data Test = Test { a :: Int, b :: Int } deriving (Show) testParser :: Parser Test testParser = do a <- decimal tab b <- decimal return $ Test a b...
585 просмотров

Как сделать разветвленный Conduit?
Я хочу, чтобы одни и те же данные были разделены на две «ветки», которые обрабатывались отдельно, а затем «объединялись»... +----------+ +---------+ -->| doublber |--- +--------+ +--------+...
452 просмотров
schedule 26.07.2023

Получение результата от потокового сетевого протокола с conduit
Я реализую простой сетевой протокол с каналом; протокол представляет собой поток сообщений, каждое сообщение имеет префикс uint32, описывающий длину сообщения. (Затем данные сообщения имеют дополнительную внутреннюю структуру, но здесь это не важно,...
170 просмотров
schedule 14.05.2022

Объединить каналы в один
Я ищу функцию, которая может сделать что-то похожее на: merge :: MonadIO m => [Producer m a] -> Producer m a Я бегло взглянул на stm-conduit , он выглядит похоже, но я не уверен, что он соответствует моим требованиям:...
396 просмотров
schedule 26.02.2023

Передача источника с ExceptT в приемник
Дан источник канала со следующей сигнатурой типа: sourceMsg :: MonadIO m => ExceptT Err (ConduitM () ByteString m) () как его передать в Data.Conduit.List.mapM_ ? Нечто подобное ниже не будет работать, потому что вывод имеет тип...
44 просмотров
schedule 21.05.2023

Повреждение общего состояния диспетчера HTTP при отправке неправильной длины для потока
Учитывая общий HTTP-менеджер, кажется, что если requestBody имеет тип requestBodySource и если для тела запроса указана неправильная длина, то последующие запросы будут выполняться в том же HTTP-менеджере примерно на 20 секунд. Кажется, есть...
70 просмотров
schedule 21.02.2024

Отдельные значения фильтра канала Haskell
Если я использую следующие Source : sourceList [1,3,3,1,2,3] Можно ли применить какой-либо фильтр или комбинатор, чтобы разрешить передачу только отдельных значений вниз по течению? Значит, в моем примере вниз по течению будет...
215 просмотров
schedule 30.11.2023

Monadic conduit map разделяет поток
Я немного балуюсь, пытаясь понять conduit . Бег runConduit $ yield "abc" .| mapC id .| sinkList дает ["abc"] во время работы runConduit $ yield "abc" .| mapMC id .| sinkList дает ["a", "b", "c"] . Почему монадическая версия...
43 просмотров
schedule 22.09.2023

Потоковое состояние монады Conduit
У меня есть конвейер, монада которого включает состояние. В какой-то момент я хотел бы иметь канал, который передает состояние следующим (это упрощенная версия того, что мне действительно нужно). Но у меня проблемы с этим. В следующем примере...
205 просмотров
schedule 03.05.2022