Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Operators

Binary Operators

OperatorDescriptionExample
==Equalityx == y
!=Inequalityx != y
<Less thanx < y
<=Less than or equalx <= y
>Greater thanx > y
>=Greater than or equalx >= y
&&Logical ANDx && y
||Logical ORx || y
->Implicationx -> y
//Set update/mergex // y
+Additionx + y
-Subtractionx - y
*Multiplicationx * y
/Divisionx / y
++List/string concatenationx ++ y

Example

# Nix source
x + y

# AST
{
  "tag": "Binary",
  "op": "+",
  "left": { "tag": "Sym", "contents": "x" },
  "right": { "tag": "Sym", "contents": "y" }
}

Unary Operators

OperatorDescriptionExample
-Numeric negation-x
!Logical NOT!x

Example

# Nix source
!x

# AST
{
  "tag": "Unary",
  "op": "!",
  "arg": { "tag": "Sym", "contents": "x" }
}

Special Operators

Operationnix-ast node
Function applicationApp
Attribute selectionSelect
Has attributeHasAttr

Nix Library Access

syntax.mkBinary "+" (syntax.mkSym "x") (syntax.mkSym "y")
syntax.mkUnary "!" (syntax.mkSym "x")
syntax.mkBinary "==" (syntax.mkInt 1) (syntax.mkInt 1)
syntax.mkBinary "//" (syntax.mkSym "a") (syntax.mkSym "b")
syntax.mkBinary "++" (syntax.mkSym "xs") (syntax.mkSym "ys")