Вопрос довольно прост, но я не могу найти хорошее решение.FRP: как умножить количество событий в одном потоке
Предположим, у меня есть поток. Поток может отправить только 4 события: А, В, С, D
Оно может быть представлено как:
[--A--A----C---B--D--...]
Рассмотрим теперь, что каждое событие имеет свое закодированное значение. Например:
A -> 1, 0, 0, 0
B -> 0, 1, 0, 0
...
Теперь возникает вопрос: Как можно преобразовать этот поток, используя кодированные значения A, B, C, D событий, что каждое событие будет представлено в виде 4-х событий вместо этого.
Для того, чтобы все ясно, это то, что я хочу:
Поток у меня есть:
[--A--A----C---B--D--...]
Я знаю, что:
A -> 1, 0, 0, 0
B -> 0, 1, 0, 0
...
Поток Я хочу сделать:
[--1-0-0-0--1-0-0-0----0-0-1-0---0-1-0-0--0-0-0-1--...]
Один золь Я могу придумать, чтобы создать карту потока, возвращая подпоток для каждого события, а затем сгладить результат. Но я не уверен, как это должно быть реализовано с точки зрения FRP.
Если мне нужно использовать комбинацию потоков, предоставьте соответствующий пример. Я использую Reactive-Cocoa лично, но вы можете отвечать на любой другой язык, это просто не имеет значения.