module lifo

class pythonic_fp.queues.lifo.LIFOQueue(*dss: Iterable)

Stateful Last-In-First-Out (LIFO) Queue data structure.

  • O(1) pops

  • O(1) amortized pushes

  • O(1) length determination

  • in a Boolean context, true if not empty, false if empty

  • will automatically increase storage capacity when needed

  • neither indexable nor sliceable by design

Parameters:

dss – Takes 1 or 0 iterables, initializes data in natural LIFO order.

Raises:

ValueError – If more than 1 iterable is given.

__init__(*dss: Iterable) None
Parameters:

dss – Takes 1 or 0 iterables, initializes data in natural LIFO order.

Raises:

ValueError – If more than 1 iterable is given.

__eq__(other: object) bool

Return self==value.

__repr__() str

Return repr(self).

__str__() str

Return str(self).

copy() LIFOQueue[D]

Shallow copy.

Returns:

Shallow copy of the LIFOQueue.

push(*ds: D) None

Push items onto LIFOQueue.

Parameters:

ds – Items to be pushed onto LIFOQueue.

pop() MayBe

Pop newest data item off of LIFOQueue.

Returns:

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

peak() MayBe

Peak at newest item on queue.

Returns:

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

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

Reduces LIFOQUEUE in natural LIFO Order, newest to oldest.

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]) LIFOQueue

Map f over the LIFOQueue, retain original order.

Parameters:

f – Function to map over queue.

Returns:

New LIFOQueue instance.

pythonic_fp.queues.lifo.lifo_queue(*ds: D) LIFOQueue

LIFOQueue factory function.

Parameters:

ds – Initial items pushed on in LIFO order.

Returns:

LIFOQueue with initialized items from ds.