Unfortunately if you don't have a pure language, the benefits of nix disappear and you're back in sad imperative land. I'm a nix language fan. The main mistake is lack of typing and debuggability (esp for recursion). The syntax is intuitive
I think it is intuitive once you spend the time to read the docs. I think folks expect they can pick it up and hack at it like many other languages. It's one that is worth spending the time to work through the pills, understand what it is doing, why and how. A lot of the confusion and frustration I've seen people have with nix the language could have been avoided if they spent a little time to pick up at least the fundamentals.
I don't think it has to be pure necessarily, but you need some form of lazyness for things to work the way they work now. You could implement it in a non-lazy language by using explicit thunks, but I don't know if that would be better.
> The syntax is intuitive
Let me guess: you come from a ML or Haskell background?
> Let me guess: you come from a ML or Haskell background
As a professional computer scientist I am familiar with all the major programming paradigms and all the general syntactic modes, whether that be C-like, Python-like, Ml-like, prolog-like, lisp-like, etc.
Yes I have worked professionally as a ML and Haskell programmer but I currently work on Assembler and c++, so my background is equally in both pots.
Nix is entirely unsurprising to anyone who is familiar with lambda calculus which should be all computer programmers really. It's fundamental. It'd be like a linguist not knowing what a preposition is.
> As a professional computer scientist I am familiar with all the major programming paradigms and all the general syntactic modes, whether that be C-like, Python-like, Ml-like, prolog-like, lisp-like, etc.
This is an overly pretentious opening for a comment even for HN.
It certainly makes me feel the need to point out that the majority of people on HN (including myself) are most certainly not "professional computer scientists." Neither are users of Docker nor system administrators. Opening your comment this way is implicitly excluding those people from using Nix.
> Nix is entirely unsurprising to anyone who is familiar with lambda calculus which should be all computer programmers really. It's fundamental. It'd be like a linguist not knowing what a preposition is.
I took my computer science classes from a department that was probably slightly more math-focused than the median CS program. Among those classes was a (optional to non-honors students) 400 level theory of computation class. I don't believe there were more than 2 hours of lecture regarding the lambda calculus, just as an aside that it was an alternate model to Turing Machines and was fully equivalent. We had a single weekly assignment that involved it.
I encountered the lambda calculus more in my philosophy classes than in my Computer Science classes.
On top of all of that, I know I am not alone in finding many forms of mathematical notation, including the lambda calculus, to be poor notation for writing software.