TOC Prev Next

Types and are Values

Bounds

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:  _|_ // conflicting values ri and 3.5 (mismatched types int and float)
c:  3
d:  "ma"
e:  _|_ // invalid value "mu" (out of bound <"mo")
r1: >=5 & <8