lix/doc/manual/expressions/language-operators.xml
Eelco Dolstra 802150f987
<replaceable> -> <emphasis>
Pandoc doesn't know <replaceable> so let's force it to be rendered as
italics.
2020-07-23 18:27:20 +02:00

222 lines
7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude"
version="5.0"
xml:id="sec-language-operators">
<title>Operators</title>
<para><xref linkend='table-operators' /> lists the operators in the
Nix expression language, in order of precedence (from strongest to
weakest binding).</para>
<table xml:id='table-operators'>
<title>Operators</title>
<tgroup cols='3'>
<thead>
<row>
<entry>Name</entry>
<entry>Syntax</entry>
<entry>Associativity</entry>
<entry>Description</entry>
<entry>Precedence</entry>
</row>
</thead>
<tbody>
<row>
<entry>Select</entry>
<entry><emphasis>e</emphasis> <literal>.</literal>
<emphasis>attrpath</emphasis>
[ <literal>or</literal> <emphasis>def</emphasis> ]
</entry>
<entry>none</entry>
<entry>Select attribute denoted by the attribute path
<emphasis>attrpath</emphasis> from set
<emphasis>e</emphasis>. (An attribute path is a
dot-separated list of attribute names.) If the attribute
doesnt exist, return <emphasis>def</emphasis> if
provided, otherwise abort evaluation.</entry>
<entry>1</entry>
</row>
<row>
<entry>Application</entry>
<entry><emphasis>e1</emphasis> <emphasis>e2</emphasis></entry>
<entry>left</entry>
<entry>Call function <emphasis>e1</emphasis> with
argument <emphasis>e2</emphasis>.</entry>
<entry>2</entry>
</row>
<row>
<entry>Arithmetic Negation</entry>
<entry><literal>-</literal> <emphasis>e</emphasis></entry>
<entry>none</entry>
<entry>Arithmetic negation.</entry>
<entry>3</entry>
</row>
<row>
<entry>Has Attribute</entry>
<entry><emphasis>e</emphasis> <literal>?</literal>
<emphasis>attrpath</emphasis></entry>
<entry>none</entry>
<entry>Test whether set <emphasis>e</emphasis> contains
the attribute denoted by <emphasis>attrpath</emphasis>;
return <literal>true</literal> or
<literal>false</literal>.</entry>
<entry>4</entry>
</row>
<row>
<entry>List Concatenation</entry>
<entry><emphasis>e1</emphasis> <literal>++</literal> <emphasis>e2</emphasis></entry>
<entry>right</entry>
<entry>List concatenation.</entry>
<entry>5</entry>
</row>
<row>
<entry>Multiplication</entry>
<entry>
<emphasis>e1</emphasis> <literal>*</literal> <emphasis>e2</emphasis>,
</entry>
<entry>left</entry>
<entry>Arithmetic multiplication.</entry>
<entry>6</entry>
</row>
<row>
<entry>Division</entry>
<entry>
<emphasis>e1</emphasis> <literal>/</literal> <emphasis>e2</emphasis>
</entry>
<entry>left</entry>
<entry>Arithmetic division.</entry>
<entry>6</entry>
</row>
<row>
<entry>Addition</entry>
<entry>
<emphasis>e1</emphasis> <literal>+</literal> <emphasis>e2</emphasis>
</entry>
<entry>left</entry>
<entry>Arithmetic addition.</entry>
<entry>7</entry>
</row>
<row>
<entry>Subtraction</entry>
<entry>
<emphasis>e1</emphasis> <literal>-</literal> <emphasis>e2</emphasis>
</entry>
<entry>left</entry>
<entry>Arithmetic subtraction.</entry>
<entry>7</entry>
</row>
<row>
<entry>String Concatenation</entry>
<entry>
<emphasis>string1</emphasis> <literal>+</literal> <emphasis>string2</emphasis>
</entry>
<entry>left</entry>
<entry>String concatenation.</entry>
<entry>7</entry>
</row>
<row>
<entry>Not</entry>
<entry><literal>!</literal> <emphasis>e</emphasis></entry>
<entry>none</entry>
<entry>Boolean negation.</entry>
<entry>8</entry>
</row>
<row>
<entry>Update</entry>
<entry><emphasis>e1</emphasis> <literal>//</literal>
<emphasis>e2</emphasis></entry>
<entry>right</entry>
<entry>Return a set consisting of the attributes in
<emphasis>e1</emphasis> and
<emphasis>e2</emphasis> (with the latter taking
precedence over the former in case of equally named
attributes).</entry>
<entry>9</entry>
</row>
<row>
<entry>Less Than</entry>
<entry>
<emphasis>e1</emphasis> <literal>&lt;</literal> <emphasis>e2</emphasis>,
</entry>
<entry>none</entry>
<entry>Arithmetic comparison.</entry>
<entry>10</entry>
</row>
<row>
<entry>Less Than or Equal To</entry>
<entry>
<emphasis>e1</emphasis> <literal>&lt;=</literal> <emphasis>e2</emphasis>
</entry>
<entry>none</entry>
<entry>Arithmetic comparison.</entry>
<entry>10</entry>
</row>
<row>
<entry>Greater Than</entry>
<entry>
<emphasis>e1</emphasis> <literal>&gt;</literal> <emphasis>e2</emphasis>
</entry>
<entry>none</entry>
<entry>Arithmetic comparison.</entry>
<entry>10</entry>
</row>
<row>
<entry>Greater Than or Equal To</entry>
<entry>
<emphasis>e1</emphasis> <literal>&gt;=</literal> <emphasis>e2</emphasis>
</entry>
<entry>none</entry>
<entry>Arithmetic comparison.</entry>
<entry>10</entry>
</row>
<row>
<entry>Equality</entry>
<entry>
<emphasis>e1</emphasis> <literal>==</literal> <emphasis>e2</emphasis>
</entry>
<entry>none</entry>
<entry>Equality.</entry>
<entry>11</entry>
</row>
<row>
<entry>Inequality</entry>
<entry>
<emphasis>e1</emphasis> <literal>!=</literal> <emphasis>e2</emphasis>
</entry>
<entry>none</entry>
<entry>Inequality.</entry>
<entry>11</entry>
</row>
<row>
<entry>Logical AND</entry>
<entry><emphasis>e1</emphasis> <literal>&amp;&amp;</literal>
<emphasis>e2</emphasis></entry>
<entry>left</entry>
<entry>Logical AND.</entry>
<entry>12</entry>
</row>
<row>
<entry>Logical OR</entry>
<entry><emphasis>e1</emphasis> <literal>||</literal>
<emphasis>e2</emphasis></entry>
<entry>left</entry>
<entry>Logical OR.</entry>
<entry>13</entry>
</row>
<row>
<entry>Logical Implication</entry>
<entry><emphasis>e1</emphasis> <literal>-></literal>
<emphasis>e2</emphasis></entry>
<entry>none</entry>
<entry>Logical implication (equivalent to
<literal>!<emphasis>e1</emphasis> ||
<emphasis>e2</emphasis></literal>).</entry>
<entry>14</entry>
</row>
</tbody>
</tgroup>
</table>
</section>