Предположим, что у меня есть источник keypads :: Producer IO Keypad
, который создает поток конфиденциальных данных, таких как одноразовые клавиатуры.
Теперь, если моя библиотека предоставляет keypads
, конечный пользователь может подключить keypads
к двум приемникам, назовем их good
и bad
, где bad
запрашивает значение и читает его, но затем возвращает его обратно вверх по течению через leftover
. Позже приемник good
может использовать ту же клавиатуру, которую ранее считывал bad
. Конечный пользователь может этого не заметить, например, если good
и bad
предоставляются внешними библиотеками.
Есть ли способ создать в канале источник только для чтения, который отбрасывает оставшиеся данные?
(Я прочитал здесь, что невозможно отключить повторное использование остатков, но поскольку я новичок в каналах, может быть, есть другой способ проектирования архитектуры, которого я не вижу.)