diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2022-08-23 14:37:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-23 14:37:53 +0200 |
commit | 74c088566b114dca1c7e7f786327b583f529edf4 (patch) | |
tree | fdb4e3ba0878b5d9ce0b404bb68a296d5719a9a9 | |
parent | 7c3ab5751568a0bc63430b33a5169c5e4784a0ff (diff) | |
parent | 703b335c1d187fb18ca5a5450b33e4e9a98abc7c (diff) |
Merge pull request #6907 from fricklerhandwerk/language-properties
reword description of language properties
-rw-r--r-- | doc/manual/src/language/index.md | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/doc/manual/src/language/index.md b/doc/manual/src/language/index.md index c4b3abf75..a4b402f8b 100644 --- a/doc/manual/src/language/index.md +++ b/doc/manual/src/language/index.md @@ -1,13 +1,33 @@ # Nix Language -The Nix language is a pure, lazy, functional language. Purity -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. +The Nix language is + +- *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. |