Skip to main content

Value LessThan



Less than operator on values.


Exp₁ < Exp₂


Exp₁Exp₂Exp₁ < Exp₂


By brute force, a total less than operator between two values V₁ and V₂ of arbitrary types T₁ and T₂ is defined:

  • If the types T₁ and T₂ can be compared then V₁ less than V₂ is used.

  • Otherwise values are ordered according their type name, for instance, int is smaller than list, and map is smaller than rel.

Less than yields true if the value of Exp₁ is strictly less than (according to the ordering defined above) the value of Exp₂, and false otherwise.


Introduce two variables X, Y and Z and force them to be of type value:

rascal>value X = "abc";
value: "abc"
rascal>value Y = "def";
value: "def"
rascal>value Z = 3.14;
value: 3.14

Now compare X and Y:

rascal>X < Y;
bool: true

and X and Z:

rascal>X < Z;
bool: false