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

Демон веб-парсинга Haskell http-проводник аварийно завершает работу с ошибкой нехватки памяти
Я написал на Haskell демона, который считывает информацию с веб-страницы каждые 5 минут. Первоначально демон работал нормально около 50 минут, но затем неожиданно умер с out of memory (requested 1048576 bytes) . Каждый раз, когда я запускал его,...
563 просмотров
schedule 16.09.2021

InternalIOException getAddrInfo: не существует (ошибка 10093) в Windows 8
Почему такой простой код не работает? import Network.HTTP.Conduit import qualified Data.ByteString.Lazy as L main :: IO () main = simpleHttp "http://www.dir.bg/" >>= L.putStr Это приводит к следующей ошибке: TestConduit.exe:...
1012 просмотров
schedule 22.10.2021

Haskell Conduit Aeson: анализ больших файлов JSON и фильтрация соответствующих ключей/значений
Я написал приложение на Haskell, которое делает следующее: Рекурсивно перечислить каталог, Проанализируйте файлы JSON из списка каталогов, Найдите совпадающие пары ключ-значение и Возвращает имена файлов, в которых были найдены совпадения....
426 просмотров
schedule 21.03.2022

Как реализовать функцию типа takeWhile с помощью комбинаторов Conduit?
Я пытаюсь реализовать функцию, которая сочетает в себе идеи groupBy и takeWhile , а также использует последнюю внутренне. В частности, он сгруппирует все элементы, которые последовательно возвращают True в текущем предикате, в виде списка, затем...
90 просмотров
schedule 09.05.2022

Conduit, замена спискам?
Я думал о списках в Haskell, и я думал, что в других языках списки не используются для всего. Конечно, вы можете захотеть сохранить список, если вам потребуются значения позже, но если это всего лишь один случай, скажем, итерация от [1..n] , зачем...
425 просмотров
schedule 17.05.2022

Есть ли способ, чтобы канал брал данные из нескольких источников, не блокируя ни один из них?
Я пишу сервер, и одно из требований заключается в том, что он должен иметь возможность передавать данные клиентам без прямого запроса данных клиентом. Я использую каналы, но мне кажется, что это выходит за рамки возможностей каналов. Проблема, с...
318 просмотров

Способы повышения производительности линейных кабелепроводов
Я использую haskell для построчной обработки данных, т.е. задач, где можно применить sed , awk и подобные инструменты. В качестве простого примера давайте добавим 000 к каждой строке из стандартного ввода. У меня есть три альтернативных...
359 просмотров
schedule 08.06.2022

Какая польза от остатков трубопровода?
Я пытаюсь понять разницу между каналом и трубами . В отличие от каналов , кондуит имеет понятие остатков. Чем полезны остатки? Я хотел бы увидеть несколько примеров, когда остатки необходимы. А поскольку в трубах нет концепции остатков,...
1133 просмотров
schedule 13.06.2022

Получение данных из rawQuery с помощью Conduits
Я признаю, что не очень хорошо понимаю Conduits, учитывая мои ограниченные знания Haskell. Так что цените, если кто-нибудь может подсказать мне, как выполнить эту задачу: я хотел бы получить результат действия rawQuery и сохранить его в переменной,...
331 просмотров
schedule 13.07.2022

Как сделать канал, подобный takeWhile, но принимающий максимум определенное количество байтов?
Я пытаюсь создать канал, нечто среднее между takeWhile и isolate . То есть он будет потреблять из ввода и уступать выходу до тех пор, пока либо предикат больше не будет выполняться, либо он не достигнет предела байтов. Я знаю, что подпись...
294 просмотров
schedule 22.07.2022

Conduit — объединение нескольких источников/производителей в один
Я читаю из файла с помощью sourceFile , но мне также нужно ввести случайность в операцию обработки. Я считаю, что лучший подход — это иметь продюсера типа Producer m (StdGen, ByteString) где StdGen используется для генерации случайного...
665 просмотров
schedule 26.07.2022

Какова реальная польза от параметра типа исходящего канала канала?
Я пытаюсь понять различия между различными реализациями концепции каналов. Одно из различий между каналом и трубами заключается в том, как они соединяют трубы вместе. Канал имеет (>+>) :: Monad m => Pipe l a b r0 m r1 ->...
350 просмотров
schedule 25.08.2022

Одношаговый канал
Я хочу сделать что-то вроде ArrowChoice, но с каналами . Я хочу дождаться значения «Любой», а затем передать значения «Лево» в один канал и значения «Право» в другой, а затем объединить результаты обратно в поток «Либо». Предположительно, это...
389 просмотров
schedule 05.09.2022

проводник: возможен источник только для чтения?
Предположим, что у меня есть источник keypads :: Producer IO Keypad , который создает поток конфиденциальных данных, таких как одноразовые клавиатуры. Теперь, если моя библиотека предоставляет keypads , конечный пользователь может подключить...
60 просмотров
schedule 14.09.2022

Обмотка трубопровода в ExceptT
Как правильно обернуть трубопровод ExceptT ? Подход должен останавливать обработку при возникновении ошибки и извлекать сообщение об ошибке. Вот игрушечный код без обработки ошибок — он просто молча останавливается: import Data.Conduit as C...
104 просмотров
schedule 22.09.2022

Что делать с освобождением от unwrapResumable?
Я написал простой прокси-сервер Wai-to-uwsgi , но при этом мне пришлось использовать unwrapResumable . Это дает развернутый Pipe и функцию «освобождения», которую в конечном итоге необходимо вызвать. Тип функции выпуска — ResourceT IO () , и я...
108 просмотров
schedule 06.11.2022

Один канал обработки, 2 источника ввода-вывода одного типа
В моем приложении GHC Haskell , использующем stm, network-conduit и conduit, у меня есть цепь для каждого сокета, которая автоматически разветвляется с использованием runTCPServer . Нити могут связываться с другими ветвями с помощью...
2314 просмотров
schedule 06.11.2022

Отсутствующие экземпляры для ResourceT в канале
Я получаю странную ошибку при попытке использовать ResourceT из канала 1.0.9.1. Мне не хватает экземпляров из документации. Например import Control.Monad import Control.Monad.Trans import Control.Monad.IO.Class import Data.Conduit test =...
260 просмотров
schedule 25.01.2023

Conduit: извлечение последовательных чисел
Я играю с библиотекой каналов и написал пример кода для извлечения двух чисел (2 и 3), когда они появляются в последовательности. Ниже приведен мой код: import Data.Conduit import qualified Data.Conduit.List as CL source = CL.sourceList...
140 просмотров
schedule 02.04.2023

Работа с бесконечными списками со строгими монадами
У меня есть функция f :: [a] -> b , которая работает с бесконечными списками (например, take 5 , takeWhile (< 100) . scanl (+) 0 и т. д.). Я хочу передать этой функции значения, сгенерированные строгими монадическими действиями (например,...
303 просмотров