Описание тега haskell-pipes

`pipe` - это группа библиотек, написанных на Haskell для обеспечения безопасного, функционального и строгого ввода-вывода.
2 ответа

Преобразование монады StateT IO для использования Control.Proxy - какой сервер, а какой клиент?

Я реализую игровой движок. Большая часть моего кода в настоящее время находится в StateT Game IO () монада. Я использую IO, чтобы получить пользовательский ввод, и на самом деле все каналы IO через одну функцию, getChoice :: Show a => [ a ] ->…
20 июн '13 в 06:32
1 ответ

Я могу сделать StateP из Control.Proxy экземпляром MonadState?

Я изменяю некоторый код, который раньше запускался внутри StateT монада, чтобы бежать внутри StateP от Control.Proxy, Тем не менее, некоторые из моего кода (например, %= оператор из Control.Lens) требует MonadState пример. Безопасно / правильно ли д…
23 июн '13 в 07:52
1 ответ

Разъяснение о потоковой передаче и эффектах в контексте библиотеки Pipes

Учебник по трубам упомянул об этом в своей документации: Если вы жертвуете эффектами, вы получаете чистые и ленивые списки на Haskell, которые вы можете преобразовать, используя составные функции в постоянном пространстве, но без чередования эффекто…
08 май '14 в 09:07
0 ответов

Черепаха: работа с не-utf8 вводом

На моем пути к изучению Pipes я столкнулся с проблемами при работе с файлами не-utf8. Вот почему я пошел в библиотеку Turtle, чтобы попытаться понять, как решить проблему там, на более высоком уровне абстракции. Упражнение, которое я хочу выполнить,…
1 ответ

Перехват исключений в трубе без прерывания

Это похоже на длинный путь, но я написал канал для подключения к базе данных, получил список баз данных на сервере, подключился к каждой из них, затем выполнил запрос для каждой (количество пользователей), а затем распечатал эти на счет. К сожалению…
19 мар '14 в 19:39
2 ответа

Какова реальная выгода от параметра типа восходящего канала?

Я пытаюсь понять различия между различными реализациями концепции труб. Одно из различий между трубопроводом и трубами заключается в том, как они соединяют трубы вместе. Трубопровод имеет (>+>) :: Monad m => Pipe l a b r0 m r1 -> Pipe Vo…
06 мар '13 в 21:27
1 ответ

Сериализация значений в массив JSON с каналами

Я хотел бы сериализовать входящие значения в JSON. Каждое значение имеет toJSON пример. Конечным результатом должен быть список. Текущий код следующий: import Pipes import qualified Pipes.Prelude as P -- assume a source of elements main :: IO () mai…
01 ноя '15 в 11:11
1 ответ

Ловля исключений в монадных трансформаторах

Я использую haskell-pipe для рекурсивного обхода каталога и печати файлов. Как мне обрабатывать исключения от источника, который является монадным преобразователем? bracket а также handle не работают в этом случае. import Control.Exception (handle, …
23 мар '16 в 09:47
2 ответа

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 :: DirSt…
20 мар '16 в 16:49
2 ответа

Построить трубы Прокси наизнанку

Можно ли сделать функцию, чтобы Proxy из труб можно построить наизнанку? Под наизнанкой я подразумеваю создание прокси из функции, которая соединяет восходящие и нисходящие соединения. Самая желанная (но невозможная) подпись была бы makeProxy :: (Mo…
08 дек '14 в 21:21
2 ответа

Использование haskell pipe-bytestring для итерации файла за строкой

Я использую библиотеку каналов и мне нужно преобразовать поток ByteString в поток строк (т.е. String), используя кодировку ASCII. Я знаю, что есть другие библиотеки (Pipes.Text и Pipes.Prelude), которые, возможно, позволяют мне легче выводить строки…
22 сен '14 в 19:58
1 ответ

Простая программа с использованием Pipes зависает

У меня есть следующая программа, которая не производит вывод при запуске с runhaskell Toy.hsи вместо этого висит бесконечно. Насколько я понимаю, программа должна напечатать "привет" и затем выйти. Буду признателен за ответ и / или совет о том, как …
30 июн '13 в 01:06
2 ответа

Haskell быстрая одновременная очередь

Эта проблема Здравствуйте! Я пишу библиотеку журналов, и я хотел бы создать регистратор, который будет работать в отдельном потоке, в то время как все потоки приложений будут просто отправлять ему сообщения. Я хочу найти наиболее эффективное решение…
14 янв '15 в 00:23
1 ответ

Спать с трубами в Haste и Haskell

Я работаю над программой на Haskell, которая интенсивно использует библиотеку Pipes. Я портирую часть библиотеки на Ускорение. Единственное место, где я столкнулся с камнем преткновения, - это странный способ, которым javascript справляется со сном.…
29 авг '14 в 15:31
1 ответ

Как использовать абонента ZMQ в Haskell с трубами

Я могу заставить подписчика ZMQ работать в Haskell, но был бы признателен за рекомендации о том, как использовать эти данные с Pipes. Моя попытка написать Producer не удалась при "сборке стека" со следующей ошибкой: Не удалось сопоставить тип "Proxy…
26 окт '18 в 20:02
2 ответа

Почему Haskell Pipes "использует () для закрытия неиспользуемых входов и X (необитаемый тип) для закрытия неиспользуемых выходов"?

В учебнике по трубам говорится, что: Конкретный тип синонимов использования () закрыть неиспользуемые входы и X (необитаемый тип), чтобы закрыть неиспользуемые выходы: Я хотел бы понять, почему () а также X используются такими, какие они есть. Почем…
02 фев '16 в 18:55
1 ответ

Pipes.Safe - как использовать mapM

У меня есть следующий код с трубы, которая в порядке без второй трубы (>-> P.mapM ( fillMD5)). fillMD5 это операция a -> IO a, runSafeT $ runEffect $ every (senseRecursive5 startfpo) >-> P.mapM ( fillMD5) >-> P.map fp2rdf >-&…
26 май '14 в 19:26
1 ответ

Потоковый анализ JSON в Haskell с помощью Pipes.Aeson

Библиотека Pipes.Aeson предоставляет следующую функцию: decode :: (Monad m, ToJSON a) => Parser ByteString m (Either DecodingError a) Если я использую evalStateT с этим анализатором и дескриптором файла в качестве аргумента, один файл JSON считыв…
17 май '14 в 18:28
2 ответа

Возможна ли труба с ограничением доходности на одного ожидания?

Я работаю с дудками-4.0.0. В этой библиотеке количество выходов в нисходящем направлении, которое делает канал, в общем случае не связано с количеством ожидающих в восходящем потоке. Но предположим, что я хотел построить ограниченный канал, который …
22 сен '13 в 17:22
1 ответ

Трубы: открыть файл в соответствии с содержанием другого

У меня есть этот код: import Pipes import Pipes.Safe import qualified Pipes.Prelude as P import qualified Pipes.Safe.Prelude as P import System.IO import Data.Text as T import Data.Text.IO as TIO import qualified Pipes.Prelude.Text as T someFunc :: …
24 авг '16 в 14:07