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)
D@-a:Quant -> @-A:Kind(a) -> @front:List<a, A> -> @rear:List<a, A> -> Deque<a, A>
type Deque.Pop source · line 11 · raw
@-a:Quant -> @-A:Kind(a) -> Kind(a)
P@-a:Quant -> @-A:Kind(a) -> @value:A -> @rest:Deque<a, A> -> Deque.Pop<a, 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>