Merge pull request #6907 from fricklerhandwerk/language-properties
reword description of language properties
This commit is contained in:
commit
74c088566b
1 changed files with 29 additions and 9 deletions
|
@ -1,13 +1,33 @@
|
||||||
# Nix Language
|
# Nix Language
|
||||||
|
|
||||||
The Nix language is a pure, lazy, functional language. Purity
|
The Nix language is
|
||||||
means that operations in the language don't have side-effects (for
|
|
||||||
instance, there is no variable assignment). Laziness means that
|
|
||||||
arguments to functions are evaluated only when they are needed.
|
|
||||||
Functional means that functions are “normal” values that can be passed
|
|
||||||
around and manipulated in interesting ways. The language is not a
|
|
||||||
full-featured, general purpose language. Its main job is to describe
|
|
||||||
packages, compositions of packages, and the variability within packages.
|
|
||||||
|
|
||||||
This section presents the various features of the language.
|
- *domain-specific*
|
||||||
|
|
||||||
|
It only exists for the Nix package manager:
|
||||||
|
to describe packages and configurations as well as their variants and compositions.
|
||||||
|
It is not intended for general purpose use.
|
||||||
|
|
||||||
|
- *declarative*
|
||||||
|
|
||||||
|
There is no notion of executing sequential steps.
|
||||||
|
Dependencies between operations are established only through data.
|
||||||
|
|
||||||
|
- *pure*
|
||||||
|
|
||||||
|
Values cannot change during computation.
|
||||||
|
Functions always produce the same output if their input does not change.
|
||||||
|
|
||||||
|
- *functional*
|
||||||
|
|
||||||
|
Functions are like any other value.
|
||||||
|
Functions can be assigned to names, taken as arguments, or returned by functions.
|
||||||
|
|
||||||
|
- *lazy*
|
||||||
|
|
||||||
|
Expressions are only evaluated when their value is needed.
|
||||||
|
|
||||||
|
- *dynamically typed*
|
||||||
|
|
||||||
|
Type errors are only detected when expressions are evaluated.
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue