conduit ? Haskell
не охота сразу в кафе писать так что может тут попробую.
есть поток данных из conduit [A|B], который нужно писать в несколько файлов, т.е. приходит событие A я начинаю создавать файл под него и писать
нужные события B в него; при этом одновременно запись может идти в несколько файлов. Вопрос в том, как это аккуратно реализовать, я вижу несколько вариантов:
1). сделать тупой sink который будет собирать все данные и выдавать результирующую структуру: минусы нифига не conduit-way, пользуется дофига оперативки,
программа будет выглядеть как лапша
2). воспользоваться stm-conduit и под каждый новый файл создавать канал, в который писать из sink-куда приходят данные и закрывать его, при необходимости,
плюсы: простое слежение за ресурсами, программа будет сильно понятнее, минусы неоправданное использование stm (есть реализация на IO-Channels, но она пока не
до конца рабочая)
3). можно-(ли?) создавать недовыполненный Pipe для записи в файл и в sink-е писать в соотвествующую трубу, тут интересный момент, что оно действие получается
недовыполненым: плюсы используется минимум лишних сущностей, минусы я не знаю как это правильно реализовать