~/bend-docscommunity

lib.bend checks

raw source on the hub · import 0xfeda1cb3f8c4b9576ff8c9fdc7be7891/lib.bend as Lib

Deque — foundational two-list double-ended queue for Bend. Publish entry for this package. Depends only on Base.

Encoding: front + rear (rear stored reversed). Each side is normalized only when that side is empty, so transfers are amortized over the operations.

1 import
import Base

Types

type Deque source · line 8 · raw

@-a:Quant -> @-A:Kind(a) -> Kind(a)

type Deque.Pop source · line 11 · raw

@-a:Quant -> @-A:Kind(a) -> Kind(a)

Definitions

def Deque.empty source · line 14 · raw

@-a:Quant -> @-A:Kind(a) -> Deque<a, A>

def Deque.push_front source · line 17 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> @x:A -> Deque<a, A>

def Deque.push_back source · line 22 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> @x:A -> Deque<a, A>

def Deque.norm_front source · line 28 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Deque<a, A>

When front is empty, reverse rear into front.

def Deque.norm_back source · line 38 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Deque<a, A>

When rear is empty, reverse front into rear.

def Deque.pop_front.go source · line 47 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, Deque.Pop<a, A>>

def Deque.pop_front source · line 56 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, Deque.Pop<a, A>>

def Deque.pop_back.go source · line 59 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, Deque.Pop<a, A>>

def Deque.pop_back source · line 68 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, Deque.Pop<a, A>>

def Deque.peek_front.go source · line 71 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, A>

def Deque.peek_front source · line 80 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, A>

def Deque.peek_back.go source · line 83 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, A>

def Deque.peek_back source · line 92 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Maybe<a, A>

def Deque.is_empty source · line 95 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Bool

def Deque.length source · line 104 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> Nat

def Deque.to_list source · line 110 · raw

@-a:Quant -> @-A:Kind(a) -> @q:Deque<a, A> -> List<a, A>

Logical order is front ++ reverse(rear).

def Deque.from_list source · line 115 · raw

@-a:Quant -> @-A:Kind(a) -> @xs:List<a, A> -> Deque<a, A>