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
InclusiveRange.Bound
ExclusiveRange.Bound
type Range.NatRange source · line 12 · raw
Data
NR@lo:Nat -> @lo_bound:Range.Bound -> @hi:Nat -> @hi_bound:Range.Bound -> Range.NatRange
type Range.U32Range source · line 15 · raw
Data
UR@lo:U32 -> @lo_bound:Range.Bound -> @hi:U32 -> @hi_bound:Range.Bound -> Range.U32Range
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>