keen/range

Source
This is a standard module and does not need to be explicitly imported.
range[t] record -new
low t
high t
low is inclusive and high is exclusive. Use .. to construct a range.
..[t] t range(low t, high t) t equal, t compare
forward-rangeable[t] spec t equal, t compare
next t(a t)
difference[t] spec
difference nat32(a t, b t)
subtract-to-nat[t] spec
- nat32(a t, b t)
difference[t] nat32(a t, b t) t subtract-to-nat
rangeable[t] spec t forward-rangeable
prev t(a t)
size[t] nat32(a t range) t difference
any[t] bool(a t range) t equal
some[t] bool(a t range, f bool mut(t)) t forward-rangeable
some-reverse[t] bool(a t range, f bool mut(t)) t rangeable
subscript nat8(a nat8 range, index nat32)
subscript nat16(a nat16 range, index nat32)
subscript nat32(a nat32 range, index nat32)
subscript nat64(a nat64 range, index nat32)
subscript nat32 range(a nat32 range, b nat32 range)
range-iterator[t] record mut (has private fields)
begin[t] t range-iterator(a t range)
end[t] t range-iterator(a t range)
take-prev[t] t(a t range-iterator) t rangeable
take-next[t] t(a t range-iterator) t forward-rangeable
in[t] bool(a t, b t range) t compare
clamp[t] t(a t, range t range) t compare
to-range[col] nat32 range(col col, range range-relative-to-end) col size