Есть ли чисто функциональная реализация для ограниченной очереди с функцией peek () в O (1)?

Я хочу поддерживать неизменяемую ограниченную очередь FIFO, из которой я могу удалить самые старые значения через определенное время. В Scala immutable.Queue хорошо работает для очередей с ограниченным размером (.size кажется O (N), поскольку он внутренне основан на List, но я могу поддерживать размер отдельно), но, похоже, быть не дешевым способом доступа к элементу head для проверки возраста самого старого значения с помощью чего-либо более дешевого, чем O (N), поэтому я не могу проверить состояние истечения срока действия самой старой записи. Есть ли указатели на чисто функциональную (неизменяемую) реализацию?

8
задан Alex B Dunlop 27 June 2011 в 04:59
поделиться