~/bend-docscommunity

lib.bend checks

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

Range — inclusive/exclusive finite numeric ranges for Bend 2.0.2.

Base has no numeric typeclass mechanism, so the public API is deliberately split into Range.Nat and Range.U32. Both use the same Bound values and the same endpoint semantics. No termination escapes are used.

1 import
import Base

Types

type Range.Bound source · line 8 · raw

Data

type Range.NatRange source · line 12 · raw

Data

type Range.U32Range source · line 15 · raw

Data

Definitions

def Range.Bound.is_inclusive source · line 18 · raw

@b:Range.Bound -> Bool

def Range.Bound.intersection source · line 25 · raw

@a:Range.Bound -> @b:Range.Bound -> Range.Bound

def Range.Bound.exclusions source · line 32 · raw

@a:Range.Bound -> @b:Range.Bound -> Nat

def Range.Bound.contains_nat.lower source · line 43 · raw

@b:Range.Bound -> @x:Nat -> @lo:Nat -> Bool

def Range.Bound.contains_nat.upper source · line 52 · raw

@b:Range.Bound -> @x:Nat -> @hi:Nat -> Bool

def Range.Bound.contains_u32.lower source · line 61 · raw

@b:Range.Bound -> @x:U32 -> @lo:U32 -> Bool

def Range.Bound.contains_u32.upper source · line 70 · raw

@b:Range.Bound -> @x:U32 -> @hi:U32 -> Bool

def Range.Nat.make source · line 81 · raw

@lo:Nat -> @lo_bound:Range.Bound -> @hi:Nat -> @hi_bound:Range.Bound -> Range.NatRange

Constructors. Range.make is the Nat spelling; Bend has no overloads, so U32 callers use Range.make_u32 or the namespaced constructors.

def Range.U32.make source · line 86 · raw

@lo:U32 -> @lo_bound:Range.Bound -> @hi:U32 -> @hi_bound:Range.Bound -> Range.U32Range

def Range.make source · line 91 · raw

@lo:Nat -> @lo_bound:Range.Bound -> @hi:Nat -> @hi_bound:Range.Bound -> Range.NatRange

def Range.make_u32 source · line 96 · raw

@lo:U32 -> @lo_bound:Range.Bound -> @hi:U32 -> @hi_bound:Range.Bound -> Range.U32Range

def Range.Nat.closed source · line 101 · raw

@lo:Nat -> @hi:Nat -> Range.NatRange

def Range.Nat.open source · line 104 · raw

@lo:Nat -> @hi:Nat -> Range.NatRange

def Range.Nat.closed_open source · line 107 · raw

@lo:Nat -> @hi:Nat -> Range.NatRange

def Range.Nat.open_closed source · line 110 · raw

@lo:Nat -> @hi:Nat -> Range.NatRange

def Range.U32.closed source · line 113 · raw

@lo:U32 -> @hi:U32 -> Range.U32Range

def Range.U32.open source · line 116 · raw

@lo:U32 -> @hi:U32 -> Range.U32Range

def Range.U32.closed_open source · line 119 · raw

@lo:U32 -> @hi:U32 -> Range.U32Range

def Range.U32.open_closed source · line 122 · raw

@lo:U32 -> @hi:U32 -> Range.U32Range

def Range.Nat.is_empty.cmp source · line 126 · raw

@cmp:Cmp -> @both_inclusive:Bool -> Bool

Nat range queries.

def Range.Nat.is_empty source · line 135 · raw

@r:Range.NatRange -> Bool

def Range.Nat.contains source · line 144 · raw

@r:Range.NatRange -> @+x:Nat -> Bool

def Range.Nat.length.cmp source · line 151 · raw

@cmp:Cmp -> @exclusions:Nat -> @n:Nat -> Nat

def Range.Nat.length source · line 160 · raw

@r:Range.NatRange -> Nat

def Range.Nat.lower_choice.cmp source · line 168 · raw

@cmp:Cmp -> @alo:Nat -> @alb:Range.Bound -> @blo:Nat -> @blb:Range.Bound -> Pair(Nat, Range.Bound)

def Range.Nat.lower_choice source · line 179 · raw

@+alo:Nat -> @alb:Range.Bound -> @+blo:Nat -> @blb:Range.Bound -> Pair(Nat, Range.Bound)

def Range.Nat.upper_choice.cmp source · line 184 · raw

@cmp:Cmp -> @ahi:Nat -> @ahb:Range.Bound -> @bhi:Nat -> @bhb:Range.Bound -> Pair(Nat, Range.Bound)

def Range.Nat.upper_choice source · line 195 · raw

@+ahi:Nat -> @ahb:Range.Bound -> @+bhi:Nat -> @bhb:Range.Bound -> Pair(Nat, Range.Bound)

def Range.Nat.overlap.finish source · line 200 · raw

@cmp:Cmp -> @lo_bound:Range.Bound -> @hi_bound:Range.Bound -> Bool

def Range.Nat.overlap.choices source · line 215 · raw

@low:Pair(Nat, Range.Bound) -> @high:Pair(Nat, Range.Bound) -> Bool

def Range.Nat.overlap source · line 222 · raw

@a:Range.NatRange -> @b:Range.NatRange -> Bool

def Range.Nat.overlaps source · line 229 · raw

@a:Range.NatRange -> @b:Range.NatRange -> Bool

def Range.Nat.clamp.cmp source · line 232 · raw

@cmp:Cmp -> @x:Nat -> @lo:Nat -> @hi:Nat -> Nat

def Range.Nat.clamp source · line 241 · raw

@r:Range.NatRange -> @x:Nat -> Nat

def Range.Nat.to_list.go source · line 247 · raw

@fuel:Nat -> @+current:Nat -> List<&2, Nat>

The recursion is explicitly fueled by the computed length.

def Range.Nat.start source · line 254 · raw

@lo:Nat -> @lo_bound:Range.Bound -> Nat

def Range.Nat.to_list.parts source · line 261 · raw

@+lo:Nat -> @+lo_bound:Range.Bound -> @+hi:Nat -> @hi_bound:Range.Bound -> List<&2, Nat>

def Range.Nat.to_list source · line 270 · raw

@r:Range.NatRange -> List<&2, Nat>

def Range.U32.is_empty.cmp source · line 276 · raw

@cmp:Cmp -> @both_inclusive:Bool -> Bool

U32 range queries. Length is Nat so the full 0..U32.max range is representable.

def Range.U32.is_empty source · line 285 · raw

@r:Range.U32Range -> Bool

def Range.U32.contains source · line 294 · raw

@r:Range.U32Range -> @+x:U32 -> Bool

def Range.U32.length.cmp source · line 301 · raw

@cmp:Cmp -> @exclusions:Nat -> @n:Nat -> Nat

def Range.U32.length source · line 310 · raw

@r:Range.U32Range -> Nat

def Range.U32.lower_choice.cmp source · line 318 · raw

@cmp:Cmp -> @alo:U32 -> @alb:Range.Bound -> @blo:U32 -> @blb:Range.Bound -> Pair(U32, Range.Bound)

def Range.U32.lower_choice source · line 329 · raw

@+alo:U32 -> @alb:Range.Bound -> @+blo:U32 -> @blb:Range.Bound -> Pair(U32, Range.Bound)

def Range.U32.upper_choice.cmp source · line 334 · raw

@cmp:Cmp -> @ahi:U32 -> @ahb:Range.Bound -> @bhi:U32 -> @bhb:Range.Bound -> Pair(U32, Range.Bound)

def Range.U32.upper_choice source · line 345 · raw

@+ahi:U32 -> @ahb:Range.Bound -> @+bhi:U32 -> @bhb:Range.Bound -> Pair(U32, Range.Bound)

def Range.U32.overlap.finish source · line 350 · raw

@cmp:Cmp -> @lo_bound:Range.Bound -> @hi_bound:Range.Bound -> Bool

def Range.U32.overlap.choices source · line 365 · raw

@low:Pair(U32, Range.Bound) -> @high:Pair(U32, Range.Bound) -> Bool

def Range.U32.overlap source · line 372 · raw

@a:Range.U32Range -> @b:Range.U32Range -> Bool

def Range.U32.overlaps source · line 379 · raw

@a:Range.U32Range -> @b:Range.U32Range -> Bool

def Range.U32.clamp.cmp source · line 382 · raw

@cmp:Cmp -> @x:U32 -> @lo:U32 -> @hi:U32 -> U32

def Range.U32.clamp source · line 391 · raw

@r:Range.U32Range -> @x:U32 -> U32

def Range.U32.to_list.go source · line 396 · raw

@fuel:Nat -> @+current:U32 -> List<&2, U32>

def Range.U32.start source · line 403 · raw

@lo:U32 -> @lo_bound:Range.Bound -> U32

def Range.U32.to_list.parts source · line 410 · raw

@+lo:U32 -> @+lo_bound:Range.Bound -> @+hi:U32 -> @hi_bound:Range.Bound -> List<&2, U32>

def Range.U32.to_list source · line 419 · raw

@r:Range.U32Range -> List<&2, U32>