2011-09-21 26 views
5

¿Hay un paquete estándar (o al menos comúnmente usado) con una mónada para las colas FIFO? Hace un tiempo leí sobre this one en un documento, y lo he usado un par de veces, pero me gustaría dejar de volver a implementar las ruedas (es divertido, pero improductivo).Haskell: FIFO mónada

+1

relacionados? http://hackage.haskell.org/package/control-monad-queue – sclv

+0

sclv: ¡Extremadamente! La diferencia parece ser el uso de continuaciones en lugar de envolverlo en una mónada. Parece que acepté la respuesta de Sjoerd demasiado pronto. – rampion

+0

Ok, lo estoy enviando como respuesta. – sclv

Respuesta

2

Hay una versión ingeniosa de colas corecursive en hackage: http://hackage.haskell.org/package/control-monad-queue

Yo no diría que es normal por cualquier medio, pero sin duda refleja una buena cantidad de trabajo y pruebas.

El artículo del lector de mónadas vinculado es una muy buena lectura también.

4

No creo que exista. Usaría una mónada State con un contenedor Seq como estado.

+0

Supongo que me sentiría raro al intercambiar O (1) por O amortizado (1). – rampion

+0

Definitivamente use 'Seq'. Consulte http://johnlato.blogspot.com/2011/07/circular-buffers.html para obtener más información. –

+0

@ John-L: buenas cosas, pero solo quiero FIFO puro. – rampion