В java есть хороший пакет java.util.concurrent, который содержит реализацию интерфейса BlockingQueue.
Мне нужно что-то похожее в Haskell, поэтому оно сможет
- поддерживать фиксированный размер очереди в памяти
- блокировать операции чтения, когда очередь пуста (получить)
- предоставляет блоки в формате time-box, которые возвращают Nothing, если очередь пуста и превышено время ожидания
- аналогично операциям put - блокировка, пока очередь не будет заполнена в версии с временным форматом
возможно, это можно реализовать с помощью STM или блокирования транзакций - но я не смог найти что-то подобное в хакерских атаках.