Skip to content

Commit

Permalink
Merge pull request #11305 from NixOS/doc-apply
Browse files Browse the repository at this point in the history
Document function application operator
  • Loading branch information
roberth authored Aug 15, 2024
2 parents ce62b76 + 06b18cf commit 31f3f23
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
22 changes: 20 additions & 2 deletions doc/manual/src/language/operators.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
| Name | Syntax | Associativity | Precedence |
|----------------------------------------|--------------------------------------------|---------------|------------|
| [Attribute selection] | *attrset* `.` *attrpath* \[ `or` *expr* \] | none | 1 |
| Function application | *func* *expr* | left | 2 |
| [Function application] | *func* *expr* | left | 2 |
| [Arithmetic negation][arithmetic] | `-` *number* | none | 3 |
| [Has attribute] | *attrset* `?` *attrpath* | none | 4 |
| List concatenation | *list* `++` *list* | right | 5 |
Expand Down Expand Up @@ -32,7 +32,7 @@
[string]: ./types.md#type-string
[path]: ./types.md#type-path
[number]: ./types.md#type-float
[list]: ./types.md#list
[list]: ./types.md#type-list
[attribute set]: ./types.md#attribute-set

<!-- TODO(@rhendric, #10970): ^ rationalize number -> int/float -->
Expand All @@ -48,6 +48,22 @@ If the attribute doesn’t exist, return the *expr* after `or` if provided, othe

[Attribute selection]: #attribute-selection

## Function application

> **Syntax**
>
> *func* *expr*
Apply the callable value *func* to the argument *expr*. Note the absence of any visible operator symbol.
A callable value is either:
- a [user-defined function][function]
- a [built-in][builtins] function
- an attribute set with a [`__functor` attribute](./syntax.md#attr-__functor)

> **Warning**
>
> [List][list] items are also separated by whitespace, which means that function calls in list items must be enclosed by parentheses.
## Has attribute

> **Syntax**
Expand Down Expand Up @@ -215,3 +231,5 @@ Equivalent to `!`*b1* `||` *b2*.
> ```
[Pipe operator]: #pipe-operators
[builtins]: ./builtins.md
[Function application]: #function-application
2 changes: 1 addition & 1 deletion doc/manual/src/language/syntax.md
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,7 @@ a string), that attribute is simply not added to the set:

This will evaluate to `{}` if `foo` evaluates to `false`.

A set that has a `__functor` attribute whose value is callable (i.e. is
A set that has a [`__functor`]{#attr-__functor} attribute whose value is callable (i.e. is
itself a function or a set with a `__functor` attribute whose value is
callable) can be applied as if it were a function, with the set itself
passed in first , e.g.,
Expand Down

0 comments on commit 31f3f23

Please sign in to comment.