module fifo

class pythonic_fp.queues.fifo.FIFOQueue(*dss: Iterable)

Stateful First-In-First-Out (FIFO) Queue data structure.

  • O(1) pops

  • O(1) amortized pushes

  • O(1) length determination

  • in a Boolean context, truthy if not empty, falsy if empty

  • will automatically increase storage capacity when needed

  • neither indexable nor sliceable by design

Parameters:

dss – Takes 1 or 0 iterables, initializes items in natural FIFO order.

Raises:

ValueError – If more than 1 iterable is given.

copy() FIFOQueue[D]

Shallow copy.

Returns:

Shallow copy of the FIFOQueue.

fold(f: Callable[[D, D], D]) MayBe[D]
fold(f: Callable[[T, D], T], start: T) MayBe[T]

Reduces FIFOQueue in natural FIFO Order, oldest to newest.

Parameters:
  • f – Reducing function, first argument is for accumulator.

  • start – Optional starting value.

Returns:

MayBe of reduced value, empty MayBe if queue empty and no starting value given.

map(f: Callable[[D], U]) FIFOQueue

Map f over the FIFOQueue, retain original order.

Parameters:

f – Function to map over queue.

Returns:

New FIFOQueue instance.

peak_last_in() MayBe

Peak at newest item on queue.

Returns:

MayBe of newest item on queue, empty MayBe if queue empty.

peak_next_out() MayBe

Peak at oldest data item on queue.

Returns:

MayBe of oldest item on queue, empty MayBe if queue empty.

pop() MayBe

Pop oldest data item off of FIFOQueue.

Returns:

MayBe of popped data item if queue was not empty, empty MayBe otherwise.

push(*ds: D) None

Push items onto FIFOQueue.

Parameters:

ds – Items to be pushed onto FIFOQueue.

pythonic_fp.queues.fifo.fifo_queue(*ds: D) FIFOQueue

FIFOQueue factory function.

Parameters:

ds – Initial items pushed on in FIFO order.

Returns:

FIFOQueue with initialized items from ds.