It refers to Declarative Programming. Specifically, this means there is no state and no flow of control. This is different from most programming / scripting, where tasks are accomplished by performing a series of tasks sequentially and making conditional branches based on state (i.e. values stored in memory). When you declare a variable in Nix / any functional programming language, its value cannot be changed arbitrarily, and therefore it does not introduce state. When you don't have any state involved, functions can be evaluated in any order - or in parallel - without one needing to wait for the result of another. They will also always produce the same result when given the same input. sin(30) will always equal 0.5 no matter what equation you plug it into.
It refers to Declarative Programming. Specifically, this means there is no state and no flow of control. This is different from most programming / scripting, where tasks are accomplished by performing a series of tasks sequentially and making conditional branches based on state (i.e. values stored in memory). When you declare a variable in Nix / any functional programming language, its value cannot be changed arbitrarily, and therefore it does not introduce state. When you don't have any state involved, functions can be evaluated in any order - or in parallel - without one needing to wait for the result of another. They will also always produce the same result when given the same input. sin(30) will always equal 0.5 no matter what equation you plug it into.