~/bend-docscommunity

lib.bend checks

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

NonEmpty (aka NEList) — foundational non-empty list for Bend. Publish entry for this package. Depends only on Base (does not reimplement List).

Encoding: head + List tail. Emptiness is unrepresentable by construction. Quantity: NonEmpty<a, A> is Kind(a), same convention as List/Maybe.

1 import
import Base

Types

type NonEmpty source · line 8 · raw

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

Definitions

def NonEmpty.one source · line 11 · raw

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

def NonEmpty.cons source · line 14 · raw

@-a:Quant -> @-A:Kind(a) -> @x:A -> @xs:NonEmpty<a, A> -> NonEmpty<a, A>

def NonEmpty.from_list source · line 19 · raw

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

def NonEmpty.to_list source · line 26 · raw

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

def NonEmpty.head source · line 31 · raw

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

def NonEmpty.tail source · line 36 · raw

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

def NonEmpty.length source · line 41 · raw

@-a:Quant -> @-A:Kind(a) -> @xs:NonEmpty<a, A> -> Nat

def NonEmpty.append source · line 52 · raw

@-a:Quant -> @-A:Kind(a) -> @xs:NonEmpty<a, A> -> @ys:NonEmpty<a, A> -> NonEmpty<a, A>

def NonEmpty.snoc source · line 60 · raw

@-a:Quant -> @-A:Kind(a) -> @xs:NonEmpty<a, A> -> @y:A -> NonEmpty<a, A>

Templates

template NonEmpty.map source · line 47 · raw

@-A:Type -> @-B:Type -> @-f:(@_:A -> B) -> @xs:NonEmpty<&1, A> -> NonEmpty<&1, B>

Template map, same shape as List.map (affine NonEmpty<A> = NonEmpty<&1, A>).