forked from lix-project/lix
09471d2680
Makes lists comparable using lexicographic comparison. Increments builtins.langVersion in order for this change to be detectable
7.4 KiB
7.4 KiB
Operators
The table below lists the operators in the Nix expression language, in order of precedence (from strongest to weakest binding).
Name | Syntax | Associativity | Description | Precedence |
---|---|---|---|---|
Select | e . attrpath [ or def ] |
none | Select attribute denoted by the attribute path attrpath from set e. (An attribute path is a dot-separated list of attribute names.) If the attribute doesn’t exist, return def if provided, otherwise abort evaluation. | 1 |
Application | e1 e2 | left | Call function e1 with argument e2. | 2 |
Arithmetic Negation | - e |
none | Arithmetic negation. | 3 |
Has Attribute | e ? attrpath |
none | Test whether set e contains the attribute denoted by attrpath; return true or false . |
4 |
List Concatenation | e1 ++ e2 |
right | List concatenation. | 5 |
Multiplication | e1 * e2, |
left | Arithmetic multiplication. | 6 |
Division | e1 / e2 |
left | Arithmetic division. | 6 |
Addition | e1 + e2 |
left | Arithmetic addition. | 7 |
Subtraction | e1 - e2 |
left | Arithmetic subtraction. | 7 |
String Concatenation | string1 + string2 |
left | String concatenation. | 7 |
Not | ! e |
none | Boolean negation. | 8 |
Update | e1 // e2 |
right | Return a set consisting of the attributes in e1 and e2 (with the latter taking precedence over the former in case of equally named attributes). | 9 |
Less Than | e1 < e2, |
none | Arithmetic/lexicographic comparison. | 10 |
Less Than or Equal To | e1 <= e2 |
none | Arithmetic/lexicographic comparison. | 10 |
Greater Than | e1 > e2 |
none | Arithmetic/lexicographic comparison. | 10 |
Greater Than or Equal To | e1 >= e2 |
none | Arithmetic/lexicographic comparison. | 10 |
Equality | e1 == e2 |
none | Equality. | 11 |
Inequality | e1 != e2 |
none | Inequality. | 11 |
Logical AND | e1 && e2 |
left | Logical AND. | 12 |
Logical OR | e1 || e2 |
left | Logical OR. | 13 |
Logical Implication | e1 -> e2 |
none | Logical implication (equivalent to !e1 || e2 ). |
14 |