Types and are Values
Bounds define a lower bound, upper bound, or inequality for a certain value. They work on numbers, strings, bytes, and and null.
The bound is defined for all values for which the corresponding comparison operation is define. For instance >5.0
allows all floating point values greater than 5.0
, whereas <0
allows all negative numbers (int or float).
bounds.cue:
rn: >=3 & <8 // type int | float ri: >=3 & <8 & int // type int rf: >=3 & <=8.0 // type float rs: >="a" & <"mo" { a: rn & 3.5 b: ri & 3.5 c: rf & 3 d: rs & "ma" e: rs & "mu" r1: rn & >=5 & <10 }
$ cue eval -i bounds.cue
a: 3.5 b: _|_ /* unsupported op &(int, float) */ c: 3 d: "ma" e: _|_ /* "mu" not within bound <"mo" */ r1: >=5 & <8