Вопросы по теме 'haskell-pipes'

могу ли я сделать StateP из Control.Proxy экземпляром MonadState?
Я изменяю некоторый код, который раньше выполнялся внутри монады StateT , чтобы он выполнялся внутри монады StateP из Control.Proxy . Однако для части моего кода (например, для оператора %= из Control.Lens ) требуется экземпляр MonadState ....
167 просмотров
schedule 21.03.2023

Экземпляр MonadTransControl для ProxyFast / ProxyCorrect
Используя каналы, я пытаюсь написать экземпляр MonadTransControl для ProxyFast или ProxyCorrect . Вот что у меня есть: instance MonadTransControl (ProxyFast a' a b' b) where data StT (ProxyFast a' a b' b) a = StProxy { unStProxy ::...
187 просмотров

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

Подключение Producer и Pipe для извлечения результата
Имея производителя типа Producer ByteString IO () и канал типа Pipe ByteString a IO () , как мне составить эффект, который при запуске приведет к IO a ? Вот моя лучшая попытка: {-# LANGUAGE ScopedTypeVariables #-} import Pipes import...
262 просмотров
schedule 20.10.2022

Haskell: разделение каналов (трансляция) без использования спавна
Этот вопрос немного кодовый и много нового. Я использую потрясающую библиотеку pipes в Haskell, и я хотел бы разделить канал для отправки одних и тех же данных по нескольким каналам (сделать широковещательную рассылку). В Pipes.Concurrent...
774 просмотров
schedule 08.11.2023

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

Потоковый разбор JSON в Haskell с помощью Pipes.Aeson
Библиотека Pipes.Aeson предоставляет следующую функцию: decode :: (Monad m, ToJSON a) => Parser ByteString m (Either DecodingError a) Если я использую evalStateT с этим синтаксическим анализатором и дескриптором файла в качестве аргумента,...
936 просмотров
schedule 03.11.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 просмотров

Вопросы параллелизма между конвейерным и неконвейерным кодом
Я нахожусь в процессе создания библиотеки C для некоторой кодировки в интерфейсе каналов, но я натолкнулся на некоторые дизайнерские решения, которые необходимо принять. После того, как библиотека C настроена, мы сохраняем контекст кодировщика....
319 просмотров
schedule 02.02.2023

Труба, которая поддерживает состояние
Я пытаюсь вычислить скользящие хеш-значения (buzzhash) для большого файла, используя pipes . В настоящее время у меня есть это. Но не знаю, как написать канал, который поддерживает состояние. import qualified Data.ByteString.Lazy as L import...
266 просмотров
schedule 06.11.2023

Haskell Pipes: как сортировать вывод производителя?
У меня есть следующий фрагмент кода: import Control.Monad (unless) import Pipes import qualified Pipes.Prelude as P import System.FilePath.Posix ((</>)) import System.Posix.Directory (DirStream, openDirStream, readDirStream) produceFiles ::...
222 просмотров
schedule 12.01.2023

Декодирование потока JSON, где одни значения нужны раньше других
Допустим, у нас есть такой объект JSON (со строкой байтов, закодированной в base64): TaggedImage = TaggedImage { id :: Text, image :: ByteString } Теперь мы хотим получить image из источника и сохранить его в месте, используя информацию в...
172 просмотров
schedule 02.11.2023

Понимание использования памяти этой программой Haskell
Я должен предварить это, сказав, что я очень новичок в Haskell и библиотеке каналов, и я хотел бы понять, что вызывает высокое использование памяти этой программой в функции test . В частности, в сгибе, который создает значение r1 в test , я...
152 просмотров
schedule 17.07.2023

Подъем трубы для работы с кортежами
Мне нужна функция с типом Pipe a b m r -> Pipe (a, c) (b, c) m r . Но сколько бы я ни играл с for , ~> или >~ ; Я не могу правильно сопоставить типы. Вы можете помочь мне?
86 просмотров
schedule 24.10.2022

Как сделать Pipe параллельной с библиотекой Haskell Pipe?
У меня есть код Haskell, использующий Pipes: module Main(main) where import Pipes a :: Producer Int IO () a = each [1..10] b :: Pipe Int Int IO () b = do x <- await yield (x*2) b c :: Consumer Int IO () c = do x <- await lift $...
404 просмотров
schedule 02.01.2023

Передача состояния от производителя к синтаксическому анализатору
Я использую каналы, attoparsec и pipe-attoparsec, чтобы написать конвертер файла дампа базы данных. Общий формат файла состоит в том, чтобы иметь команду создания таблицы, за которой следует необязательная команда вставки. В дополнение к...
103 просмотров
schedule 02.11.2022

Запись в файл в потоковом режиме и остановка при достижении заданного размера файла памяти
Допустим, я хочу сохранить поток MyItem в файл (например, в JSON). Я хотел бы остановиться, когда файл достигает определенного предела размера в байтах. Я хотел бы сделать это в Haskell... потоковая передача для меня не проблема, а как получить...
79 просмотров
schedule 02.08.2022

Трубы `работают` с состоянием
У меня есть продюсер: p :: Producer Message IO r . Я могу обрабатывать все сообщения, используя: runEffect $ for p processMessage куда processMessage :: Message -> Effect IO () . Как я могу реализовать обработку с сохранением...
51 просмотров
schedule 07.01.2023