2011-09-21 1 views
5

Есть ли стандартный (или, по крайней мере, обычно используемый) пакет с монадой для очередей FIFO? Я читал около this one в газете некоторое время назад, и я использовал его пару раз, но я бы хотел прекратить повторное использование колес (это весело, но непродуктивно).Haskell: FIFO monad

+1

связано? http://hackage.haskell.org/package/control-monad-queue – sclv

+0

sclv: Чрезвычайно! Кажется, что разница заключается в использовании продолжений, а не в обертке монады. Похоже, я принял ответ Сьёрда слишком рано. – rampion

+0

Хорошо, я представляю это как ответ. – sclv

ответ

2

Там есть отличная версия corecursive очереди на hackage: http://hackage.haskell.org/package/control-monad-queue

Я бы не назвал это стандартом любых средств, но это, безусловно, отражает изрядное количество работы и тестирования.

Связанная статья читателя монады является действительно хорошим чтением тоже.

4

не думаю есть. Я бы использовал монаду State с контейнером Seq как состояние.

+0

Я полагаю - я просто почувствовал бы странную замену O (1) на амортизацию O (1). – rampion

+0

Определенно используйте 'Seq'. См. Http://johnlato.blogspot.com/2011/07/circular-buffers.html для получения дополнительной информации. –

+0

@ John-L: хорошие вещи - но я просто хочу чистого ФИФО. – rampion